zoukankan      html  css  js  c++  java
  • SQL GROUP BY GROUPING SETS,ROLLUP,CUBE(需求举例)

     实现按照不同级别分组统计

    关于GROUP BY 中的GROUPING SETS,ROLLUP,CUBE 从需求的角度理解会更加容易些。

    需求举例:

    假如一所学校只有两个系,

    每个系有两个专业,

    每个专业有两个班,

    须在需要一张按照不同级别统计学生人数的报表

    例如:

    系别 专业 班级 学生人数
    1系      
      专业1    
        班级1  
        班级2  
      专业2    
        班级1  
        班级2  
    2系      
      专业1    
        班级1  
        班级2  
      专业2    
        班级1  
        班级2  

    首先想到的方法就是,按照不同界别去GROUP BY 然后union到一起,

    而GROUPING SETS,ROLLUP,CUBE就类似的实现了这种功能,使编码更简洁。

    •  GROUPING sets 

    1, GROUPING sets(1,2)等效于

      SELECT 1,COUNT FROM dummy GROUP BY 1

      UNION ALL

      SELECT 2,COUNT FROM dummy GROUP BY 2

    •  ROLLUP
    2, ROLLUP(1,2,3)等效于

      GROUPING SETS(

    (1,2,3), 

    (1,2), 

    1,

    () 

    )

    • CUBE

    3, CUBE(1,2,3)等效于

      GROUPING SETS(
    (1,2,3),
    (1,2),
    (1,3),
    (2,3),
    1,
    2,
    3,
    ()
    )
     
     ---------------------------华丽的分割线------------------------------
    举了一个简单的例子:
    执行结果如下:
     
  • 相关阅读:
    JS循环语句作业讲解(折纸、兔子生兔子、买东西组合)
    JavaScript If...Else 语句
    一个用纯CSS实现的下拉菜单
    form表单练习
    CSS样式表
    form表单的属性标签
    form表单的属性标签和练习
    HTML基础标签入门
    学习目标
    Oracle表格建立
  • 原文地址:https://www.cnblogs.com/mingdashu/p/GROUPING_SETS.html
Copyright © 2011-2022 走看看