GROUPING SETS 等效项
使用 GROUPING SETS 的 GROUP BY 子句可以生成一个等效于由多个简单 GROUP BY 子句的 UNION ALL 生成的结果集。GROUPING SETS 可以生成等效于由简单 GROUP BY、ROLLUP 或 CUBE 操作生成的结果。GROUPING SETS、ROLLUP 或 CUBE 的不同组合可以生成等效的结果集。
本主题提供了 GROUPING SETS 等效项的示例。这些示例中使用了以下缩写:
Agg():任何聚合函数
(arg):参数
UNION ALL 的 GROUPING SETS 等效项
指定 GROUPING SETS (<分组集> [,...n]) 作为 GROUP BY 列表等效于查询的 UNION ALL,其中每个查询将其中一个分组集作为其 GROUP BY 列表。浮点数的聚合返回的结果可能会略有不同。
以下语句是等效的:
|
|
简单 GROUP BY 的 GROUPING SETS 等效项
以下子句可返回相同的总计:
|
|
以下子句可返回相同的单个结果集:
|
|
GROUPING SETS ROLLUP 等效项
输入列表为 n 维的 GROUP BY ROLLUP (<组合元素列表>) 等效于这样的 GROUPING SETS,其中使用其输入列表的所有前缀 (n+1) 作为其 GROUPING SETS。
以下子句是等效的:
|
|
GROUPING SETS CUBE 等效项
输入列表为 n 维的 GROUP BY CUBE (<组合元素列表>) 等效于这样的 GROUPING SETS,其中使用其输入列表的全集(输入列表中维度的 2n 个组合)作为其 GROUPING SETS。
以下子句是等效的:
|
|
以下子句是等效的:
|
|
内部包含分组集的 ROLLUP 中的组合列
以下子句是等效的:
|
|
|
内部包含分组集的 CUBE 中的组合列
以下子句是等效的:
|
|
|
包含 GROUPING SETS、ROLLUP 或 CUBE 的 GROUP BY
以下子句是等效的:
|
|
以下子句是等效的:
|
|
以下子句是等效的:
|
|
包含在 GROUPING SETS 列表中的 ROLLUP
以下子句是等效的:
|
|
包含在分组集中的 ROLLUP
以下子句是等效的:
|
|