grouping sets/rollup/cube用法 select dep,product,sum(num) from tgrouping group by grouping sets((dep),(product),()) order by dep,product; dep product sum ++ 业务1部 240 业务2部 170 业务3部 240 电脑 280 手机 370 650 (6 rows) 使用grouping sets 代替 group by 。 plaintext teledb select dep,product,sum(num) from tgrouping group by grouping sets((dep,product)) order by dep,product; dep product sum ++ 业务1部 电脑 80 业务1部 手机 160 业务2部 电脑 120 业务2部 手机 50 业务3部 电脑 80 业务3部 手机 160 使用rollup plaintext rollup((a),(b)) 等价于 grouping sets((a,b),(a),())。 teledb select dep,product,sum(num) from tgrouping 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),())。 plaintext teledb select dep,product,sum(num) from tgrouping 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 (10 rows)