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;

  • 相关阅读:
    .net core项目iis10上出现 HTTP 错误 500.19,错误代码:0x8007000d
    redis安装
    【Docker】来自官方映像的 6 个 Dockerfile 技巧
    vi编辑器内上下左右健变ABCD的修复方法
    linux下安装ping命令
    Managing Chef Cookbooks the Berkshelf way
    chef学习杂记
    源代码与二进制异同
    chef 配置之 Templates
    shell ${}的使用
  • 原文地址:https://www.cnblogs.com/rusking/p/4600206.html
Copyright © 2011-2022 走看看