Rollup Cube Grouping Set使用总结

以上三种在数据汇总统计时经常用到,我尝试以简明易懂地总结出其使用方法和意义


GROUP BY ROLLUP(c1,c2,c3...cN) 分级汇总

   1. 汇总从左到右逐级降低,最精细的汇总数据是根据最右的列得到

   2.  根据c1得到全部汇总->再根据c2细分汇总->...->根据cN得到最精细汇总。

采购进货表Purchase(货品ID,数量,价格,类型,日期,供应商 )

SELECT MONTH(日期),类型,供应商 ,SUM( 价格)

FROM Purchase

GROUP BY ROLLUP(MONTH(日期),类型,供应商)

汇总的条件包括4种:

 (所有),(MONTH(日期)),(MONTH(日期),类型),(MONTH(日期),类型,供应商)

条件对应的结果集:

得到总采购额汇总,根据日期得到每月采购额汇总,各个月中不同类型商品的采购额的单项汇总,每月中每个类型的商品分别由不同供应商的供货额。


GROUP BY CUBE(c1,c2,c3...Cn) 获取所有聚合值的超集,换句话说,就是生成的结果集包括所有可能的聚合情况(所有维度)

SELECT MONTH(日期),类型,供应商 ,SUM( 价格)

FROM Purchase

GROUP BY CUBE(MONTH(日期),类型,供应商)

汇总条件包括7种:

 (所有),(MONTH(日期)),(类型),(供应商),(MONTH(日期),类型),

 (MONTH(日期),供应商),(类型,供应商)
条件对应结果集包括:

      采购总额的汇总,各个月份的采购额汇总,各类型商品的采购额汇总,不同供应商的采购总额,每个月不同类型商品的采购额,每个月不同供应商的采购额,每个类型商品不同供应商的采购额。


GROUP BY GROUPING SETS(c1,c2,c3...cN)指定不同的汇总列,合并结果到一个结果集。类似多个汇总结果用UNION ALL拼起来。

SELECT MONTH(日期),类型,供应商 ,SUM( 价格)

FROM Purchase

GROUP BY  GROUPING SETS(MONTH(日期),类型,供应商)

()条件表示,所有汇总。还可以将多个列组合成一个分组条件,如((c1,c2),c3)

汇总条件:

   (MONTH(日期)),(类型),(供应商),分别得到结果,然后合并到一个返回结果集中。

意义:

    一个结果集输出,多个分组汇总的合并结果集。各月采购额+各类型商品采购额+各供应商采购额。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章