九月 23, 2023
摘要:在本教程中,您将学习如何使用 PostgreSQL 的CUBE
生成多个分组集。
目录
PostgreSQL CUBE 简介
PostgreSQL 的CUBE
是GROUP BY
子句的子句。CUBE
允许您生成多个分组集。
分组集是要分组的一组列。有关分组集的更多信息,请查看GROUPING SETS
教程。
下面说明了CUBE
子句的语法:
SELECT
c1,
c2,
c3,
aggregate (c4)
FROM
table_name
GROUP BY
CUBE (c1, c2, c3);
在这个语法中:
- 首先,指定 SELECT 语句的
GROUP BY
子句中的CUBE
子句。 - 其次,在查询列表中指定要分析的列(维度或维度列)和聚合函数表达式。
- 第三,在
GROUP BY
子句中,在CUBE
子子句的括号内指定维度列。
该查询根据CUBE
中指定的维度列生成所有可能的分组集。该CUBE
子子句是定义多个分组集的简短方法,因此以下内容是等效的:
CUBE(c1,c2,c3)
GROUPING SETS (
(c1,c2,c3),
(c1,c2),
(c1,c3),
(c2,c3),
(c1),
(c2),
(c3),
()
)
一般来说,如果CUBE
中指定的列数为n
,那么您将有 2n 种组合。
PostgreSQL 允许您执行部分多维数据集以减少计算的聚合数量。下面显示了语法:
SELECT
c1,
c2,
c3,
aggregate (c4)
FROM
table_name
GROUP BY
c1,
CUBE (c1, c2);
PostgreSQL CUBE 示例
我们将使用GROUPING SETS
教程中创建的sales
表进行演示。
以下查询使用CUBE
子子句生成多个分组集:
SELECT
brand,
segment,
SUM (quantity)
FROM
sales
GROUP BY
CUBE (brand, segment)
ORDER BY
brand,
segment;
这是输出:
以下查询执行生成部分多维数据集:
SELECT
brand,
segment,
SUM (quantity)
FROM
sales
GROUP BY
brand,
CUBE (segment)
ORDER BY
brand,
segment;
在本教程中,您学习了如何使用 PostgreSQL 的CUBE
生成多个分组集。