九月 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生成多个分组集。