使用rollup

最近更新时间: 2024-06-12 15:06:00


使用rollup 
* rollup((a),(b))等价于grouping sets((a,b),(a),()) *

postgres=# select dep,product,sum(num) from t_grouping group by rollup((dep),(product)) order by dep,product;
   dep   | product | sum 
---------+---------+-----
 业务1部 | 电脑    |  80
 业务1部 | 手机    | 160
 业务1部 |         | 240
 业务2部 | 电脑    | 120
 业务2部 | 手机    |  50
 业务2部 |         | 170
 业务3部 | 电脑    |  80
 业务3部 | 手机    | 160
 业务3部 |         | 240
         |         | 650

该功能等价于grouping sets((dep, product),( dep),())

postgres=# select dep,product,sum(num) from t_grouping group by grouping sets((dep, product),( dep),()) order by dep,product;
   dep   | product | sum 
---------+---------+-----
 业务1部 | 电脑    |  80
 业务1部 | 手机    | 160
 业务1部 |         | 240
 业务2部 | 电脑    | 120
 业务2部 | 手机    |  50
 业务2部 |         | 170
 业务3部 | 电脑    |  80
 业务3部 | 手机    | 160
 业务3部 |         | 240
         |         | 650