zoukankan      html  css  js  c++  java
  • sql中 with rollup 、with cube、grouping 统计函数用法

    with rollup 、with cube、grouping
    CUBE 和 ROLLUP 之间的区别在于:
    CUBE 生成的结果集显示了所选列中值的所有组合的聚合。
    ROLLUP 生成的结果集显示了所选列中值的某一层次结构的聚合。
    grouping:
    当用 CUBE 或 ROLLUP 运算符添加行时,附加的列输出值为1,当所添加的行不是由 CUBE 或 ROLLUP 产生时,附加列值为0。

    (GROUPING这个函数是反映目标列是否聚合,如何聚合则返回1,否则返回0)


    --例如
    DECLARE@TTABLE(名称 VARCHAR(1) , 出版商 VARCHAR(10),  价格1  INT, 价格2 INT)
    INSERT@T
    SELECT'a''北京'1122UNIONALL
    SELECT'a''四川'2233UNIONALL
    SELECT'b''四川'1223UNIONALL
    SELECT'b''北京'1020UNIONALL
    SELECT'b''昆明'2030
    SELECT
    名称,
    出版商,
    SUM(价格1) AS 价格1,
    SUM(价格2) AS 价格2,
    GROUPING(名称) AS CHECK名称,
    GROUPING(出版商) AS CHECK出版商
    FROM@TGROUPBY 名称,出版商 WITH CUBE

    /*
    名称   出版商        价格1         价格2         CHECK名称 CHECK出版商
    ---- ---------- ----------- ----------- ------- --------
    a    北京         11          22          0       0
    a    四川         22          33          0       0
    a    NULL       33          55          0       1
    b    北京         10          20          0       0
    b    昆明         20          30          0       0
    b    四川         12          23          0       0
    b    NULL       42          73          0       1
    NULL NULL       75          128         1       1
    NULL 北京         21          42          1       0
    NULL 昆明         20          30          1       0
    NULL 四川         34          56          1       0
    (所影响的行数为 11 行)
    */
    --分析
    /*
    group by 两列:名称有两个类别A,B;所有由CUBE运算而生成行的是
    名称   出版商        价格1         价格2         CHECK名称 CHECK出版商
    ---- ---------- ----------- ----------- ------- --------
    a    NULL       33          55          0       1
    b    NULL       42          73          0       1
    出版商有三个类别,所有由CUBE运算而生成行的是
    名称   出版商        价格1         价格2         CHECK名称 CHECK出版商
    ---- ---------- ----------- ----------- ------- --------
    NULL 北京         21          42          1       0
    NULL 昆明         20          30          1       0
    NULL 四川         34          56          1       0
    以及
    NULL NULL       75          128         1       1
    */

    SELECT
    名称,
    出版商,
    SUM(价格1) AS 价格1,
    SUM(价格2) AS 价格2
    FROM@TGROUPBY 名称,出版商 WITH ROLLUP

    /*
    名称   出版商        价格1         价格2
    ---- ---------- ----------- -----------
    a    北京         11          22
    a    四川         22          33
    a    NULL       33          55
    b    北京         10          20
    b    昆明         20          30
    b    四川         12          23
    b    NULL       42          73
    NULL NULL       75          128
    */

  • 相关阅读:
    std::async
    k最近邻算法(kNN)
    QNX下进程间通信
    ubuntu 18.04 安装破解pycharm professional 专业版
    安装scrapy出现Twisted依赖问题
    pytorchhub解决bug:.cache orchhubmaster.zip.....'另一个程序正在使用此文件,进程无法访问。'
    pytorchhub教程之安装pytorch或pytorchversion
    错误:java.lang.ClassNotFoundException:org.apache.commons.fileupload.FileItemFactory 解决方案
    Failed to start component [StandardEngine[Catalina].StandardHost[localhost].错误解决方案
    Javaweb之注解访问servlet和web.xml配置文件
  • 原文地址:https://www.cnblogs.com/sunzhenyong/p/3478034.html
Copyright © 2011-2022 走看看