zoukankan      html  css  js  c++  java
  • Oracle:grouping和rollup

    Oracle grouping和rollup简单测试

    SQL> select department_id,sum(salary) from employees where department_id in(10,30,90,100) group by department_id order by department_id;
    DEPARTMENT_ID SUM(SALARY)
    ------------- -----------
               10        4400
               30       24900
               90       58000
              100       51608
    
    SQL> select department_id,first_name,sum(salary) from employees where department_id in(10,30,90,100) group by (department_id,first_name) order by department_id;
    DEPARTMENT_ID FIRST_NAME           SUM(SALARY)
    ------------- -------------------- -----------
               10 Jennifer                    4400
               30 Alexander                   3100
               30 Den                        11000
               30 Guy                         2600
               30 Karen                       2500
               30 Shelli                      2900
               30 Sigal                       2800
               90 Lex                        17000
               90 Neena                      17000
               90 Steven                     24000
              100 Daniel                      9000
              100 Ismael                      7700
              100 John                        8200
              100 Jose Manuel                 7800
              100 Luis                        6900
              100 Nancy                      12008
    16 rows selected
    
    SQL> select department_id,first_name,sum(salary) from employees where department_id in(10,30,90,100) group by rollup(department_id,first_name) order by department_id;
    DEPARTMENT_ID FIRST_NAME           SUM(SALARY)
    ------------- -------------------- -----------
               10 Jennifer                    4400
               10                             4400
               30 Alexander                   3100
               30 Den                        11000
               30 Guy                         2600
               30 Karen                       2500
               30 Shelli                      2900
               30 Sigal                       2800
               30                            24900
               90 Lex                        17000
               90 Neena                      17000
               90 Steven                     24000
               90                            58000
              100 Daniel                      9000
              100 Ismael                      7700
              100 John                        8200
              100 Jose Manuel                 7800
              100 Luis                        6900
              100 Nancy                      12008
              100                            51608
    DEPARTMENT_ID FIRST_NAME           SUM(SALARY)
    ------------- -------------------- -----------
                                            138908
    21 rows selected
    
    SQL> select department_id,grouping(department_id),first_name,grouping(first_name),sum(salary) from employees where department_id in(10,30,90,100) group by rollup(department_id,first_name) order by department_id;
    DEPARTMENT_ID GROUPING(DEPARTMENT_ID) FIRST_NAME           GROUPING(FIRST_NAME) SUM(SALARY)
    ------------- ----------------------- -------------------- -------------------- -----------
               10                       0 Jennifer                                0        4400
               10                       0                                         1        4400
               30                       0 Alexander                               0        3100
               30                       0 Den                                     0       11000
               30                       0 Guy                                     0        2600
               30                       0 Karen                                   0        2500
               30                       0 Shelli                                  0        2900
               30                       0 Sigal                                   0        2800
               30                       0                                         1       24900
               90                       0 Lex                                     0       17000
               90                       0 Neena                                   0       17000
               90                       0 Steven                                  0       24000
               90                       0                                         1       58000
              100                       0 Daniel                                  0        9000
              100                       0 Ismael                                  0        7700
              100                       0 John                                    0        8200
              100                       0 Jose Manuel                             0        7800
              100                       0 Luis                                    0        6900
              100                       0 Nancy                                   0       12008
              100                       0                                         1       51608
    DEPARTMENT_ID GROUPING(DEPARTMENT_ID) FIRST_NAME           GROUPING(FIRST_NAME) SUM(SALARY)
    ------------- ----------------------- -------------------- -------------------- -----------
                                        1                                         1      138908
    21 rows selected

    rollup为按分组统计小计和。
    grouping(department_id)和grouping(first_name)
    如果当前列所在的行为空,则显示为1,不为空则显示为0;

  • 相关阅读:
    使用 nginx 作反向代理,启用 keepalive 时,遇到 502 错误的调查过程
    docker php安装模块报 Operation not permitted 解决方案
    记一次php压测性能影响很大的参数
    数据库第一章-学习笔记
    P1469 找筷子
    P1597 语句解析
    c语言优势 scanf("%d,%d",&a,&b)==2
    数据库第二章-学习笔记
    数据库 E-R 图之学习笔记
    数据库第六章-学习笔记
  • 原文地址:https://www.cnblogs.com/rusking/p/4600206.html
Copyright © 2011-2022 走看看