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

sql - 将 OVER (PARTITION BY ...) 与 GROUPING SETS 结合起来?

我有下transaction表:

在此处输入图像描述

我想计算每个购买的总数量:

  • product
  • category(即同一个内所有产品的总数量category
  • department(即同一个内所有产品的总数量department

此外,应计算上述总数:

  1. 每个购物者
  2. 每个家庭/家庭(同一家庭中所有购物者的总数量)。

输出表应如下所示:

在此处输入图像描述

对于家庭,总数计算一次,然后“复制”给同一家庭中的每个购物者。

为了计算表格中product//的多个总计categorydepartment我使用的是在前面的问题GROUPING SETS中向我指出的here 。所以我得到了正确的。total_quantity_individual

对于,在更简单的表上使用这里指出的方法是total_quantity_family有意义的。OVER(PARTITION BY)

但是,我不确定如何将两者结合在一起。没有太多关于与 结合的OVER(PARTITION BY)信息GROUPING SETS

我的查询看起来像:

如果OVER(PARTITION BY)不适用于我的情况,我的其他选择可能是:

  1. transaction按分组family_id,然后对结果运行 GROUPING SETS,然后用 重新加入transaction
  2. 也许使用explode() 和横向视图的技巧?

出于可维护性的原因,我真的不想将个人版本与家庭版本之间的查询分开。

注意:如果有帮助,我将使用带有 Hive 上下文的 Spark SQL。

感谢任何帮助。谢谢!

编辑:这似乎工作:

0 投票
2 回答
84 浏览

oracle - Oracle - 分组集和流水线表函数(预期 NUMBER 得到 ROW)

我正在使用摘要逻辑编写报告GROUPING SETS,但出现此错误:

当我只包含c1c2单独包含时,它工作正常:

当我直接从t1表中获取查询时,它也可以正常工作:

我错过了什么?我觉得这很简单。这是我的设置的简化示例:

数据库版本 - 12.1.0

更新
我的实际功能得到的不同错误(即使有“物化”提示):

0 投票
1 回答
211 浏览

postgresql - 如何从 postgres 分组集查询中删除空值

我想在单个查询中执行多个独立的分组,以便我可以在单个查询中获得不同列的分组计数。我使用以下示例查询实现了这一点:

查询示例结果如下:

从结果中,您可以看到它首先在model列上分组,os_version然后是timezone。但是在这个过程中,它还为当前没有发生分组的列引入了空值。

我想知道是否有任何方法可以在不编写任何自定义解析器的情况下获得没有任何空值的结果。例如,我期望的目标结果是:

0 投票
0 回答
37 浏览

sql - 将 MonetDB 分组集与 Pentaho Mondrian 一起使用

我知道 MonetDB 支持分组集。我也知道 Mondrian 也支持它们,但仅在几个数据库中。

是否可以在 Mondrian 中为 MonetDB 数据库启用 SQL 分组集?

谢谢!

0 投票
1 回答
71 浏览

sql - Postgres ROLLUP中如何区分真正的NULL和正式的NULL?

我正在尝试确定每个给定行所属的 ROLLUP 报告的“级别”。当初始数据不包含空值时,可以只计算每一行中的空值(对于每个给定的分组级别/层,空单元格的数量是相同的),尽管它在我看来也不是一个漂亮的解决方案。

如果初始数据包含 NULL,则此解决方法不再有效:在示例查询结果表中,您会看到它<null>来自真正的 null,并且(null)是分组单元格的标准 NULL 占位符。

我希望找到类似于“分层查询中的虚拟列(如LEVEL,PATH等)的内容。

PostgreSQL v12 中是否有一种自然的方法来确定使用ROLLUP(通常使用GROUPING SETS)构建的报告中的行级别?

ROLLUP 查询结果示例:

0 投票
2 回答
108 浏览

sql - 如何在层次树的每个节点中进行分组的 SQL 查询?

有一个具有通常“子到父”结构的表,其中每个节点都有权重。

如何构建产生一组行的 SQL 查询,其中每行代表每个特定节点及其子节点的分组?

请根据您的选择使用任何 SQL 方言。只需要一个总体思路或解决方案的原型。

为了解决这个问题,我正在尝试使用 GROUPING SETS 和 ROLLUP 报告,但无法弄清楚处理“动态”分组级别数的方法。

预期查询结果示例:

0 投票
1 回答
106 浏览

sql - Postgresql - 在一个非常大的表上跨多个列应用组

我正在使用一个非常大的表(约 4.25 亿行,约 800 列,磁盘上约 750GB),看起来像(此处包括 4 列):

我想要做的是按每列中的每个唯一值将 id 分组在一起。输出如下所示:

每列将有 2-15 个不同的值,因此每个分组中会有非常多的 id,因为总共有大约 4.25 亿个 id。我决定做的是将 id 分成特定大小的组,然后跟踪这些块,如下所示(仅显示 c1 列):

我面临的问题是我不知道如何一次跨多个列检索这些结果。对于单个列,此 SQL 将提供上表:

我担心的是必须运行此查询约 800 次(无论有多少列),每次读取约 4.25 亿行。我知道分组集提供了一种同时按多个不同集进行分组的方法,这意味着我们可以读取一次表格并获得我们正在寻找的所有结果,但我不知道如何在1) 合并分块行为和 2) 在结果集中保留相关的 colname 的方式,这对于我们正在考虑的所有分组集中的每个分组集都是必需的。

附加上下文:对于所需的最终结果集中的 id、列、值和块,排序并不重要。

任何帮助将不胜感激,谢谢。

0 投票
1 回答
31 浏览

r - 在自定义函数中使用分组集 - R

我在 R 工作,我有以下数据:

我对其执行分组集以汇总总数:

输出:

区域名称 类型 beta_total gamma_total
西方 不适用 15 9
东方 不适用 9 6
西方 小的 7 4
西方 大的 8 5
东方 大的 9 6

我的问题:可以将分组集添加到自定义函数中吗?例如,这是我到目前为止所拥有的:

但是,当我运行该功能时:

我收到此错误:

(x, 0L, eval(jj), by)中的错误[.data.table:找不到对象 'var1'

有人能帮忙吗?