zoukankan      html  css  js  c++  java
  • oracle group by中cube和rollup字句的使用方法及区别

      oracle group by中rollup和cube的区别: 
      Oracle的GROUP BY语句除了最基本的语法外,还支持ROLLUP和CUBE语句。

      如果是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操作。 

      测试数据: 
    /* 
      Oracle的GROUP BY语句除了最基本的语法外,还支持ROLLUP和CUBE语句。 
    */ 
    --创建表 

    create table fzq 
    ( 
        name varchar(20), 
        calss varchar(2), 
        kemu  varchar(4), 
        chengji varchar(3) 
        
    ) 
    测试表

    --插入数据 

    insert into fzq values 
    ('11','1','数学','90');
    insert into fzq values 
    ('11','1','语文','68'); 
    insert into fzq values 
    ('12','1','数学','90'); 
    insert into fzq values 
    ('12','1','语文','88'); 
    insert into fzq values 
    ('22','2','数学','70'); 
    insert into fzq values 
    ('22','2','语文','88'); 
    insert into fzq values 
    ('33','2','数学','95'); 
    insert into fzq values 
    ('33','2','语文','98');
    
    commit;
    测试数据
    • select * from fzq;

    • select calss,name,sum(chengji) from fzq group by calss,name;

    • select calss,name,sum(chengji) from fzq group by cube(calss,name) order by calss;

    • select calss,name,sum(chengji) from fzq group by rollup(calss,name) order by calss;

    • select calss,name,sum(chengji) from fzq group by grouping sets(calss,name);

     

  • 相关阅读:
    找零钱「Usaco2006 Dec」
    才艺表演「Usaco2018 Open」
    潜入行动「JSOI2018」
    任务安排「SDOI2012」
    BZOJ2298: [HAOI2011]problem a
    JZOJ 5818
    JZOJ 3493
    JZOJ 3470
    JZOJ 5781
    JZOJ 5778
  • 原文地址:https://www.cnblogs.com/HondaHsu/p/4481218.html
Copyright © 2011-2022 走看看