问题标签 [grouping-sets]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - 具有多个 GROUP BY 的总体摘要
假设我有一个census
包含以下信息的表:
我正在建立国家/省级的报告,它给了我以下信息:
我希望在报告中包含一个“总体摘要”行,以便最终结果如下所示:
我对ROLLUP
s 很熟悉,但我似乎无法找到一个可以让我得到我想要的东西的组合。UsingGROUP BY ROLLUP(country, province)
包括我想要的总价值,但它也包括大量我不关心的额外价值。这也适用于GROUP BY ROLLUP(country), province
我怎样才能制作“总”记录?
我目前正在用 a 计算它,UNION ALL
并用 a different 重复 90% 的第一个查询GROUP BY
,但是因为第一个查询很重要,所以结果是缓慢而丑陋的代码。
对于那些想要玩这个的人来说,这是一个 SQL Fiddle:http ://sqlfiddle.com/#!4/12ad9/5
sql-server - 单次扫描中的数据行和总计行
假设我们在表中有以下数据:
并且需要在末尾添加总计行(SUM
用于数量和NULL
其余列)。
我知道我需要的可以通过将总计与union all
as 相加来实现:
但这种方式表被扫描两次。
为避免两次扫描数据,我尝试使用group by
:
这样只有一个表扫描,我几乎得到了我需要的东西,除了样本数据的前两行(它们是重复的)被合并为一个,我需要将重复的行保存为单独的行。
问题: 是否可以在添加总计行的情况下获取表格数据,以便扫描一次表格数据并将重复项保存为单独的行?
期望的结果是union all
查询返回的结果:
查询返回的结果group by grouping sets
:
sql-server-2005 - “SETS”附近的语法不正确。- SQL Server 2005
我的代码:
我这样做是因为这三个字段重复,另外两个字段重复:
w.[P2010]
w.wug县
某些 wmsProjectNameSWP 不同
wmsSponsorEntityName | wmsSponsorEntityPrimaryRegion | wmsProjectNameSWP | w.wug县 | P2010
阿伯纳西 | ○ | 当地地下水开发| 拉伯克 | 808
阿伯纳西 | ○ | 当地地下水开发| 黑尔 | 2297
但我在“SETS”附近收到错误语法错误。
任何指导将不胜感激。
grouping-sets - 不带 SPD 的多个分组
我们的客户希望在 Sharepoint 2010 列表中进行多个分组。大约 6 个分组标题。不幸的是,我们不允许使用 SPD。有什么方法可以在没有 SPD 的情况下创建多个分组?
sql - 分组在聚合参数和 NULL 替换中设置列
互联网上有很多分组集示例,例如下面示例中的查询 Q1。但是查询 Q2 不同,因为 A2 是一个分组列,它被用作 SUM() 的参数。
根据 SQL 标准,以下哪一项对于 Q2 是正确的(任何版本自 2003 年以来支持分组集)?如果(1)正确,请参照标准说明原因。
A2 被 NULL 替换,除非它位于聚合的参数中。这种解释将给出以下结果 R1。这是 Oracle 的行为(这似乎更有用)。
A2 被 NULL 替换,包括它在聚合中的使用位置:这意味着聚合将返回 NULL。这种解释将给出以下结果 R2。这就是我对 SQL 标准的理解(可能不正确)。
示例代码:
我从 SQL 2003 7.9 Syntax 17 中了解到这一点,它描述了如何用 NULL 替换列。但是,我可能错过或误解了其他地方排除聚合参数的规则。
sql - SQL 存储过程 - 可以使用 where 子句对集合进行分组?
我以前用过Grouping Sets
在一个列中总结所有内容以获得总计。
但是,我还没有找到一种方法来总结包含的列,WHERE CLAUSE
我想知道是否真的有一种方法可以使用Grouping Sets
?
更新
这是一个基本查询的示例:我希望能够总结所有的地方Deleted = 0
。因为我不希望删除的交易被包含在总计中。但我仍然希望已删除的交易出现在结果中。
sql - 为什么 PostgreSQL 9.5 的 CUBE、ROLLUP 和 GROUPING SETS 会比等价的 UNION 慢?
我非常期待 PostgreSQL 9.5 的新特性,并且很快就会升级我们的数据库。但是当我发现时我很惊讶
对我们数据集的查询实际上比等效数据的查询持续时间总和慢得多(约 3 秒)(所有 4 个查询总共约 1 秒,每个查询 100-300 毫秒)。col1 和 col2 都有索引。
这是预期的吗(这意味着该功能现在更多的是关于兼容性而不是关于性能)?还是可以以某种方式对其进行调整?
这是真空生产表的示例:
总时间是可比的,但后者使用四次扫描,不应该更慢吗?使用 rollup() 时“磁盘上的外部合并”很奇怪,我将 work_mem 设置为 16M。
sql - 使用分组集获取总计
我正在将 SQL SERVER 2005 迁移到 SQL SERVER 2014 并遇到了这个问题。我有一个“搜索引擎” STORED PROCEDURE
,可以为我的报告网站即时构建报告查询。在旧版本中,我曾经COMPUTE BY
获得小计和总计。COMPUTE BY
SQL SERVER 2014 不再支持,我切换到使用GROUPING SETS
. 但是,有一个问题。报告可以有多个页面。他们可以有超过 200 页。我只想在最后一页显示总计。默认情况下,每页都获取 1000 条记录。最后一页通常会显示剩余记录和整个记录集的总计。我可以用COMPUTE BY
. 和GROUPING SETS
, 我不能。我只能计算最后一页的总计,而不是整个记录集。任何建议,将不胜感激。谢谢。
sql - 分组集的 32 列限制
我仍在进行 sql 2005 到 sql 2014 服务器迁移。
使用较旧的服务器,使用COMPUTE BY
,我能够创建一个包含 57 列的报告,其中一些列是聚合字段。我可以在一份报告(一个查询)中使用的列数量没有限制。
使用新的 sql 2014,我grouping sets
用来获得相同的结果,但我遇到了限制。我无法将所有列放入一个分组集中,然后得到小计和总计:
GROUP BY 子句中指定的表达式过多。提供分组集时,最大数量为 32。
有没有办法可以提供更多的列,或者有没有办法绕过这个限制?
我还附上了图片以更好地了解发生了什么..查询图片
sql - SQL GROUPING SETS 具有多个多对多维度的平均值
我有一个包含以下内容的数据表:
我想做一个 GROUPING SETS (Platform,Dt,(Platform,Dt),()) 聚合,以便能够为 Platform 和 Dt 的每个组合找到以下内容:
- 总购买量
- 唯一用户总数
- 每位用户每天的平均购买量
前两个很简单,因为它们可以分别通过 sum(Total_Purchases) 和 count(distinct user) 来实现。
我遇到的问题是最后一个指标。结果集应如下所示,但我不知道如何正确计算最后一列:
对于前十行,我们看到获得每位用户每天的平均购买量是前两列的简单划分,因为这些行中的维度仅代表一个日期。但是当我们查看最后 3 行时,我们发现除法并不是达到预期结果的方法。这是因为它需要依次取每天的平均值才能获得每天的总金额。
如果不清楚,请告诉我,我很乐意解释得更好。这是我在这个网站上的第一篇文章!