zoukankan      html  css  js  c++  java
  • GROUP BY ROLLUP和CUBE 用法

    ROLLUP和CUBE 用法     
          Oracle的GROUP BY语句除了最基本的语法外,还支持ROLLUP和CUBE语句。

           如果是Group by  ROLLUP(A, B, C)的话,首先会对(A、B、C)进行GROUP BY,然后对(A、B)进行GROUP BY,然后是(A)进行GROUP BY,最后对全表进行GROUP BY操作。

          如果是GROUP BY CUBE(A, B, C),则首先会对(A、B、C)进行GROUP BY,然后依次是(A、B),(A、C),(A),(B、C),(B),(C),最后对全表进行GROUP BY操作。

           grouping_id()可以美化效果。除了使用GROUPING函数,还可以使用GROUPING_ID来标识GROUP BY的结果。

           也可以 Group by Rollup(A,(B,C)) ,Group by A Rollup(B,C),…… 这样任意按自己想要的形式结合统计数据,非常方便。

    Rollup():分组函数可以理解为group by的精简模式,具体分组模式如下:

      Rollup(a,b,c): (a,b,c),(a,b),(a),(全表)

    Cube():分组函数也是以group by为基础,具体分组模式如下:

      cube(a,b,c):(a,b,c),(a,b),(a,c),(b,c),(a),(b),(c),(全表)

    DROP TABLE TEST_GROUPBY 
    
    
    CREATE TABLE TEST_GROUPBY(
    ClassName          nvarchar(20),   --班级
    StudentName        nvarchar(20),   --姓名
    SubjectName        nvarchar(20),   --科目
    Scores             INT             --分数
    )
    
    DELETE FROM TEST_GROUPBY
    
    INSERT INTO TEST_GROUPBY SELECT '高一(1)班','王小贱','数学',10
    INSERT INTO TEST_GROUPBY SELECT '高一(1)班','王小贱','英语',10
    INSERT INTO TEST_GROUPBY SELECT '高一(2)班','李神瑛','英语',10
    INSERT INTO TEST_GROUPBY SELECT '高一(2)班','董昕辰','英语',10
    
    
    SELECT ClassName,StudentName,SubjectName,SUM(Scores) AS Scores 
    FROM   TEST_GROUPBY
    GROUP BY ROLLUP (ClassName,StudentName,SubjectName)
    
    SELECT ClassName,StudentName,SubjectName,SUM(Scores) AS Scores 
    FROM   TEST_GROUPBY
    GROUP BY ROLLUP (ClassName,(StudentName,SubjectName))
    
    
    SELECT ClassName,StudentName,SubjectName,SUM(Scores) AS Scores 
    FROM   TEST_GROUPBY
    GROUP BY ROLLUP ((ClassName,StudentName),SubjectName)
    
    
    SELECT ClassName,StudentName,SubjectName,SUM(Scores) AS Scores 
    FROM   TEST_GROUPBY
    GROUP BY cube (ClassName,StudentName,SubjectName)
    

      

  • 相关阅读:
    ASP.Net 显示
    ASP.Net EF框架
    ASP.Net redis存取方法
    ASP.Net 红包
    winform 代码生成textbox ,checkbox
    c# winform 窗体 对话框绑定的值如何填到主窗体问题
    c# / .net wFramework winform 之运行后的窗体窗口可拖动操作
    托管调试助手 "DisconnectedContext":“针对此 RuntimeCallableWrapper 向 COM 上下文 0xd47808 的转换失败,错误如下: 系统调用失败。
    使用C#语言,如何实现EPLAN二次开发 Api插件及菜单展示
    winform 学习之qq邮箱正则验证及常用正则
  • 原文地址:https://www.cnblogs.com/DBArtist/p/5090901.html
Copyright © 2011-2022 走看看