Skip to main content
 首页 » 数据库

介绍PostgreSQL CUBE

2022年07月19日140Free-Thinker

介绍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表,示例如下:
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; 

查询结果如下:
部分cube查询结果

总结

我们学习了PostgreSQL CUBE生成多个分组结果集。


本文参考链接:https://blog.csdn.net/neweastsun/article/details/91903047
阅读延展