介绍PostgreSQL CUBE
本文我们学习如何使用PostgreSQL CUBE生成多个分组结果集。
PostgreSQL CUBE概述
PostgreSQL CUBE是Group By子句的子句。Cube可以生成多个分组集。分组集是一组用于分组列的集合。下面列出cube子句的语法:
SELECT
c1,
c2,
c3,
aggregate (c4)
FROM
table_name
GROUP BY
CUBE (c1, c2, c3);
- 首先,cube子句在select语句中的group子句中
- 其次,在select列表中,指定想分析列(维度或维度列)和聚集函数表达式
- 第三,在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,则会有2的n次方个组合。PostgreSQL 可以执行部分cube减少聚集计算量,语法如下:
SELECT
c1,
c2,
c3,
aggregate (c4)
FROM
table_name
GROUP BY
c1,
CUBE (c1, c2);
PostgreSQL CUBE示例
这里使用sales表,示例如下:
查询使用cube子句生成多个分组集合:
SELECT
brand,
segment,
SUM (quantity)
FROM
sales
GROUP BY
CUBE (brand, segment)
ORDER BY
brand,
segment;
查询结果:
部分cube查询示例:
SELECT
brand,
segment,
SUM (quantity)
FROM
sales
GROUP BY
brand,
CUBE (segment)
ORDER BY
brand,
segment;
查询结果如下:
总结
我们学习了PostgreSQL CUBE生成多个分组结果集。
本文参考链接:https://blog.csdn.net/neweastsun/article/details/91903047