• 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)
    

      

  • 相关阅读:
    angular $modal 模态框
    过滤器 ||(filter)
    info sharp Are you trying to install as a root or sudo user? Try again with the --unsafe-perm flag
    git error: unable to create file Invalid argument
    bash shell 快捷键
    options has an unknown property 'modifyVars'. These properties are valid: 处理方法
    test 分支强制替换master 分支的办法
    脚本统计代码行数
    git commit 后,没有push ,怎么撤销
    php 用户ip的获取
  • 原文地址:https://www.cnblogs.com/DBArtist/p/5090901.html
Copyright © 2020-2023  润新知