美文网首页
二. GROUPING 运算符

二. GROUPING 运算符

作者: cqzhangjian | 来源:发表于2018-10-31 17:58 被阅读0次

    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

    相关文章

      网友评论

          本文标题:二. GROUPING 运算符

          本文链接:https://www.haomeiwen.com/subject/hfiatqtx.html