继续上篇oracle sql 高级编程学习笔记(十八):https://blog.csdn.net/whandgdh/article/details/82662267
中使用cube函数的例子
我们按照大类和小类分组求销售额
select t.main_type, t.small_type,sum(t.sales_mount)sales_mount from test_cube t
group by t.main_type, t.small_type;
select t.main_type, t.small_type, sum(t.sales_mount) sales_mount
from test_cube t
group by grouping sets((t.main_type, t.small_type),t.main_type);
–对于cube得到的结果 (a,b),(a)
要求除了小计,还要求做总计
select t.main_type, t.small_type, sum(t.sales_mount) sales_mount
from test_cube t
group by grouping sets((t.main_type, t.small_type),t.main_type,null);
可以理解为 cube的结果(a,b),(a),()
注意再存过中使用null参数会报错,需要改为,()
我们再来看看cube
select t.main_type,t.small_type,sum(t.sales_mount) from test_cube t
group by cube( t.main_type,t.small_type)
大家可以看到同样cube行数包含了grouping sets的结果
grouping sets的结果可以使用 cube +grouping来得到
总结:cube函数的结果可以用grouping 或者grouping set 控制,但是grouping可以根据返回值改变所需要的结果,而
grouping sets 一旦参数定了,结果就不能改变