问题标签 [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.

0 投票
6 回答
5742 浏览

sql - 具有多个 GROUP BY 的总体摘要

假设我有一个census包含以下信息的表:

我正在建立国家/省级的报告,它给了我以下信息:

我希望在报告中包含一个“总体摘要”行,以便最终结果如下所示:

我对ROLLUPs 很熟悉,但我似乎无法找到一个可以让我得到我想要的东西的组合。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

0 投票
1 回答
109 浏览

sql-server - 单次扫描中的数据行和总计行

假设我们在表中有以下数据:

并且需要在末尾添加总计行(SUM用于数量和NULL其余列)。

我知道我需要的可以通过将总计与union allas 相加来实现:

但这种方式表被扫描两次。

为避免两次扫描数据,我尝试使用group by

这样只有一个表扫描,我几乎得到了我需要的东西,除了样本数据的前两行(它们是重复的)被合并为一个,我需要将重复的行保存为单独的行。

问题: 是否可以在添加总计行的情况下获取表格数据,以便扫描一次表格数据并将重复项保存为单独的行?

期望的结果是union all查询返回的结果:

查询返回的结果group by grouping sets

0 投票
1 回答
317 浏览

sql-server-2005 - “SETS”附近的语法不正确。- SQL Server 2005

我的代码:

我这样做是因为这三个字段重复,另外两个字段重复:

w.[P2010]

w.wug县

某些 wmsProjectNameSWP 不同

wmsSponsorEntityName | wmsSponsorEntityPrimaryRegion | wmsProjectNameSWP | w.wug县 | P2010

阿伯纳西 | ○ | 当地地下水开发| 拉伯克 | 808

阿伯纳西 | ○ | 当地地下水开发| 黑尔 | 2297

但我在“SETS”附近收到错误语法错误。

任何指导将不胜感激。

0 投票
1 回答
14 浏览

grouping-sets - 不带 SPD 的多个分组

我们的客户希望在 Sharepoint 2010 列表中进行多个分组。大约 6 个分组标题。不幸的是,我们不允许使用 SPD。有什么方法可以在没有 SPD 的情况下创建多个分组?

0 投票
1 回答
1773 浏览

sql - 分组在聚合参数和 NULL 替换中设置列

互联网上有很多分组集示例,例如下面示例中的查询 Q1。但是查询 Q2 不同,因为 A2 是一个分组列,它被用作 SUM() 的参数。

根据 SQL 标准,以下哪一项对于 Q2 是正确的(任何版本自 2003 年以来支持分组集)?如果(1)正确,请参照标准说明原因。

  1. A2 被 NULL 替换,除非它位于聚合的参数中。这种解释将给出以下结果 R1。这是 Oracle 的行为(这似乎更有用)。

  2. A2 被 NULL 替换,包括它在聚合中的使用位置:这意味着聚合将返回 NULL。这种解释将给出以下结果 R2。这就是我对 SQL 标准的理解(可能不正确)。

示例代码:

我从 SQL 2003 7.9 Syntax 17 中了解到这一点,它描述了如何用 NULL 替换列。但是,我可能错过或误解了其他地方排除聚合参数的规则。

0 投票
1 回答
83 浏览

sql - SQL 存储过程 - 可以使用 where 子句对集合进行分组?

我以前用过Grouping Sets在一个列中总结所有内容以获得总计

但是,我还没有找到一种方法来总结包含的列,WHERE CLAUSE我想知道是否真的有一种方法可以使用Grouping Sets

更新

这是一个基本查询的示例:我希望能够总结所有的地方Deleted = 0。因为我不希望删除的交易被包含在总计中。但我仍然希望已删除的交易出现在结果中。

0 投票
2 回答
1287 浏览

sql - 为什么 PostgreSQL 9.5 的 CUBE、ROLLUP 和 GROUPING SETS 会比等价的 UNION 慢?

我非常期待 PostgreSQL 9.5 的新特性,并且很快就会升级我们的数据库。但是当我发现时我很惊讶

对我们数据集的查询实际上比等效数据的查询持续时间总和慢得多(约 3 秒)(所有 4 个查询总共约 1 秒,每个查询 100-300 毫秒)。col1 和 col2 都有索引。

这是预期的吗(这意味着该功能现在更多的是关于兼容性而不是关于性能)?还是可以以某种方式对其进行调整?

这是真空生产表的示例:

总时间是可比的,但后者使用四次扫描,不应该更慢吗?使用 rollup() 时“磁盘上的外部合并”很奇怪,我将 work_mem 设置为 16M。

0 投票
1 回答
701 浏览

sql - 使用分组集获取总计

我正在将 SQL SERVER 2005 迁移到 SQL SERVER 2014 并遇到了这个问题。我有一个“搜索引擎” STORED PROCEDURE,可以为我的报告网站即时构建报告查询。在旧版本中,我曾经COMPUTE BY获得小计和总计。COMPUTE BYSQL SERVER 2014 不再支持,我切换到使用GROUPING SETS. 但是,有一个问题。报告可以有多个页面。他们可以有超过 200 页。我只想在最后一页显示总计。默认情况下,每页都获取 1000 条记录。最后一页通常会显示剩余记录和整个记录集的总计。我可以用COMPUTE BY. 和GROUPING SETS, 我不能。我只能计算最后一页的总计,而不是整个记录集。任何建议,将不胜感激。谢谢。

0 投票
0 回答
1081 浏览

sql - 分组集的 32 列限制

我仍在进行 sql 2005 到 sql 2014 服务器迁移。

使用较旧的服务器,使用COMPUTE BY,我能够创建一个包含 57 列的报告,其中一些列是聚合字段。我可以在一份报告(一个查询)中使用的列数量没有限制。

使用新的 sql 2014,我grouping sets用来获得相同的结果,但我遇到了限制。我无法将所有列放入一个分组集中,然后得到小计和总计:

GROUP BY 子句中指定的表达式过多。提供分组集时,最大数量为 32。

有没有办法可以提供更多的列,或者有没有办法绕过这个限制?

我还附上了图片以更好地了解发生了什么..查询图片

0 投票
0 回答
59 浏览

sql - SQL GROUPING SETS 具有多个多对多维度的平均值

我有一个包含以下内容的数据表:

我想做一个 GROUPING SETS (Platform,Dt,(Platform,Dt),()) 聚合,以便能够为 Platform 和 Dt 的每个组合找到以下内容:

  • 总购买量
  • 唯一用户总数
  • 每位用户每天的平均购买量

前两个很简单,因为它们可以分别通过 sum(Total_Purchases) 和 count(distinct user) 来实现。

我遇到的问题是最后一个指标。结果集应如下所示,但我不知道如何正确计算最后一列:

对于前十行,我们看到获得每位用户每天的平均购买量是前两列的简单划分,因为这些行中的维度仅代表一个日期。但是当我们查看最后 3 行时,我们发现除法并不是达到预期结果的方法。这是因为它需要依次取每天的平均值才能获得每天的总金额。

如果不清楚,请告诉我,我很乐意解释得更好。这是我在这个网站上的第一篇文章!