问题标签 [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 投票
2 回答
792 浏览

sql - 如何使用 SQL 创建两个总计行 - 总计和平均值

我需要创建两行包含总计,而不是典型的总计行。总计和平均值。

我正在使用基本 SQL 创建报告,并且正在使用 Oracle 数据库,但我没有使用任何 PL/SQL。

我目前正在使用 Group By Grouping Sets 来生成报告,其中一行是包含总计的行。这些总计目前正在使用 SUM(column) 生成,使用聚合和分析函数的组合来生成我的一行总计。我需要的是在同一数据集上产生总计的另一行。实现这一目标的最佳方法是什么?当我说得最好时,我正在考虑我的数据库上的负载,因为此报告将针对大量数据运行。我的例子非常基本,但可以理解。

下面是一些使用 Group By Grouping Sets 生成总计总计的示例数据。缺少的是我想要生成平均值的总计下方的另一行。

我正在寻找的示例图像。

在此处输入图像描述

以下是我对如何获得这个额外的 Totals Row 的想法,但不确定这是否是为了获得这个我应该做的。似乎令人费解,我一直认为这应该是 Grouping Sets 的现有功能。在下面的方法中,我使用 CTE 和 UNION ALL 在我的数据集底部获取额外的平均值总计,如下面的屏幕截图所示。

在此处输入图像描述

上面屏幕截图中的 SQL。

0 投票
2 回答
504 浏览

sql - 如何在 Oracle 中使用分组集重命名列

我使用分组集计算总金额

我会得到这样的东西

但我想将名称“TOTAL”更改为“comany1 -total”或“c​​ompany2-total”,例如

有可能这样做吗?我坚持了一段时间。谢谢!!!

0 投票
1 回答
457 浏览

apache-spark - 我们可以在不爆炸蜂巢/火花中的行的情况下进行汇总或多维数据集吗

我在一个蜂巢表(数百亿行)上聚合 4 个维度,它们需要被卷起或立方。假设我的表是关于用户交互的,我将汇总他们使用的移动应用程序、他们拥有的移动操作系统等。 sql 如下所示:

select d1, d2, d3, d4, count(distinct userId) as uv, sum(1) as pv from T group by cube(d1, d2, d3, d4)

由于当前的分组集/汇总/多维数据集实现会爆炸输入(根据此jira),导致总共 16 次通过输入,这非常消耗资源。

我对此的自定义解决方案是有一个临时表,我首先汇总用户 ID 和 4 个维度,然后进行汇总。

create table tmp as select userId, d1, d2, d3, d4, sum(1) as pv from T group by userId, d1, d2, d3, d4

然后

select d1, d2, d3, d4, count(1) as uv, sum(pv) as pv from tmp group by cube(d1, d2, d3, d4)

由于输入数据很大,因此进行预聚合会显着减少运行时间(减少 16 次传递的输入数据大小)。

所以我想知道 hive/spark 是否可以内置这个规则,或者人们通常会处理这个我不知道的问题?

0 投票
1 回答
62 浏览

connect-by - Oracle 分层查询

我正在尝试提取 Oracle Apps 中特定段的所有层次结构值(引用表applsys.fnd_flex_Value_norm_hierarchy& applsys.fnd_flex_values)。我想要一个像树一样的显示,从最高父级开始,一直到最后一个后代)是这样的:

截图1

我已经能够在每一行中使用重复的父级提取数据,并且目前在 excel 中手动对其进行格式化,但我确信有一种方法可以使用sql它自己但无法做到这一点。请注意我已经写了一个sql给我的数据如下。

截图2

任何建议都会非常有帮助。

0 投票
1 回答
84 浏览

sql - “每个 GROUP BY 表达式必须包含至少一个不是外部引用的列”和“分组集”

我有以下 SQL 查询,我的目标是制作小计和一般总计,按产品对小计进行分组,但我的问题是,如果我只使用“分组依据”,他将不得不添加“选择”,结果不会是想要的。所以我尝试使用“分组集”,但它给出了以下错误

“每个 GROUP BY 表达式必须包含至少一列不是外部引用”

任何人都可以解决上述问题或只能按产品分组吗?

我是新使用的Grouping set子句

0 投票
1 回答
331 浏览

sql - 如何克服 HANA 表 UDF 不支持的 grouping() 函数?

我在 HANA 匿名块中编写了一些自定义逻辑。我在中间某处使用了分组功能作为核心。它运作良好,结果令人满意。

一旦我尝试通过移动到 HANA 表函数来将其工业化,激活过程很顺利,但是函数在尝试从中选择时开始抛出如下错误。

无法执行“udf_foo()”SAP DBTech JDBC:[7]:不支持功能:grouping_id() 或 grouping() 函数应与分组集一起使用

您能否告诉 HANA 上的表 UDF 是否正式不支持 grouping() 操作?
我正在使用 HANA 1.0 SPS 12。作为一种解决方法,我使用了 case 语句。

重现方式:

附言。我发现https://answers.sap.com/questions/11570257/sap-hana-usage-of-grouping.html中报告的所有错误在 SPS 12 中仍未修复。

0 投票
1 回答
43 浏览

sql - oracle按列求和而不使用联合

我有这张表:(供应表:仓库中有多少产品)

我应该写一个查询来得到这个结果:

“Total_except_storage_30”包含存储中除存储编号 30 之外的所有产品的总数。例如,第一个“total_except_storage_30”用于除 storage_id 30 之外的所有存储中的 product_id 1000,第二个用于 product_id 1001。

*** 我不允许使用“Union”。

我尝试使用完全外连接,但这不起作用,结果没有“total_except_storage_30”:

0 投票
1 回答
103 浏览

sql - Calculating multiple averages across different parts of the table?

I have the following transactions table:

I would like to calculate the average number of products purchased (for each product in the table). I'm also looking to calculate averages across each category and each department by accounting for all products within the same category or department respectively. Care should be taken to divide over unique customers AND the product quantity being greater than 0 (a 0 quantity indicates a refund, and should not be accounted for).

So basically, the output table would like below:

enter image description here

...where store_id and average_level_type are partition columns.

Is there a way to achieve this in a single pass over the transactions table? or do I need to break down my approach into multiple steps?

Thanks!

0 投票
1 回答
317 浏览

sql - 分组集中的列不应该是 NULL = SQL Server 错误,或者更有可能是,我不理解分组集吗?

我正在 SQL Server 2019 开发人员版上运行以下脚本。您可以在自己的 SQL Server 上运行它,任何数据库都可以(不需要特定的架构)。

在我的脚本底部,我在 GROUP BY 子句中有一个包含 2 个分组集的查询。第二个分组集包含一个表达式作为分组集中的唯一列,我在 SELECT 子句中将相同的表达式输出为名为“Month”的列。作为此 Grouping Set 的结果呈现的行将此 Month 列输出为 NULL。

我不希望这样。我预计任何输出与分组集中指定的列相同的列都应该包含该组的行被分组的值。简而言之,我的结果集中的每一行都应该在 Month 列中有一个值,因为该列的表达式在我的两个分组集中。

我想错了吗?通过运行此脚本在您的 SQL Server 上尝试...

查询:

部分输出:

在此处输入图像描述

附加信息:

我还注意到,如果您从第一个分组集中删除“iib.InventoryDate”列并从 SELECT 子句中删除它),它实际上解决了我在这里提到的问题......输出的行第二分组集实际上现在确实包含月份列中的那些缺失值。诡异的!!(正确的?)

这对我来说就像一个错误。我是不是误会了?

0 投票
1 回答
46 浏览

sql - 使用多个总和优化查询?

我有桌子products

对于每种产品,我想计算 2 个总数:

  • 每个购物者的总数量
  • 每个家庭的总量。同一家庭中所有购物者的总数量。

决赛桌应如下所示:

这是我的查询:

但是看查询计划,看起来效率很低(我认为)。如何改进上面的查询?