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)
    

      

  • 相关阅读:
    使用CSDN Code将网站部署到Windows Azure Website上
    各种云计算虚拟机大比拼
    PLSQL无法连接64位Oracle数据库/Database下拉框为空的解决方法
    adb命令集锦
    Web常用函数介绍(LoadRunner相关)
    公开的免费WebService接口分享
    WEB服务器与应用服务器的区别
    电梯测试点有哪些?
    管理者必须知道的:你真的会惩罚你的团队吗?
    分享几个面试题的回答思路
  • 原文地址:https://www.cnblogs.com/DBArtist/p/5090901.html
Copyright © 2011-2022 走看看