继续上篇oracle sql 高级编程学习笔记(十八):https://blog.youkuaiyun.com/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 一旦参数定了,结果就不能改变

本文深入探讨了Oracle SQL中的cube函数用法,通过具体示例展示了如何利用cube函数及grouping sets进行复杂的数据分组汇总操作,并对比了cube与grouping sets的不同之处。
2250

被折叠的 条评论
为什么被折叠?



