二. GROUPING 运算符

2018-10-31  本文已影响0人  cqzhangjian

GROUPING 运算符 完成数据的小计和合计。

GROUPING 运算符分三类(ROLLUP 、CUBE 、GROUPING SETS)

1. ROLLUP 运算符

ROLLUP

再看ROLLUP例子:

ROLLUP 例子

分析:
ROLLUP指定多列进行分组统计的时候,拿上面的例子看经过以下步骤得出结果,
其实背后是按照先 group by () ----- > 再 group by(p.product_type) ------> 最后 group by(p.product_type,p.regist_date),最终得到的结果进行合并结果集(就是三种不同颜色统计出来的小计以及总计结果). 这里要注意一下 ROLLUP 指定列的顺序不同统计的小计是有差异的。

继续再看ROLLUP例子,先看刚刚例子出现的现象:

null 出现的现象

看 GROUPING 运算符 补充以上的例子:

grouping例子

尼玛是不是更看不懂了!不管,记住返回grouping 函数计算出来的值为 1 不是总计 就是 小计。

整理一下再看:

完美

2.CUBE 运算符

CUBE 跟 ROLLUP 用法一样,直接看现象。把上面的 例子 ROLLUP 直接改成 CUBE:


CUBE

可以看出 使用 CUBE 多出了几行,其实这几行是通过 regist_date 进行分组汇总得到的行。所以说,
CUBE 和 ROLLUP 的区别是在于 CUBE 会把指定的所有列进行分组汇总。 诸如:

group by () ----- > 再 group by(p.product_type) ------>再 group by(p.regist_date) ------> 最后 group by(p.product_type,p.regist_date)

3.GROUPING SETS 运算符

GROUPING SETS 其实比较简单,就是从 ROLLUP 或者 CUBE 中只取 指定列的小计结果,不取总计以及多列聚集的结果,直接看效果:

GROUPING SETS
上一篇下一篇

猜你喜欢

热点阅读