zoukankan      html  css  js  c++  java
  • 关于SQL的分组汇总统计(关键字 Grouping)

    在做数据分组查询的时候我们经常会用到分组汇总查询,做个简单的例子:

    create table #bbb (大类 nvarchar(10),小类 nvarchar(10),酒水名称 nvarchar(20),数量 int,单价 Money)
    -----------------------------------------------------
    insert into  #bbb select '酒水','啤酒','青岛',10,5
    insert into  #bbb select '酒水','啤酒','哈尔滨',13,5
    insert into  #bbb select '酒水','啤酒','燕京',14,6
    insert into  #bbb select '酒水','啤酒','青岛春生',15,8
    
    
    insert into  #bbb select '酒水','白酒','老白干',18,8
    insert into  #bbb select '酒水','白酒','二锅头',30,5
    insert into  #bbb select '酒水','白酒','邵大',20,15
    insert into  #bbb select '酒水','白酒','茅台',8,200
    
    insert into  #bbb select '酒水','红酒','长城干红',90,30
    insert into  #bbb select '酒水','红酒','长城甜红',30,20
    insert into  #bbb select '酒水','红酒','解百纳',10,55
    ---------------------------------------------------------
    insert into  #bbb select '香烟','本地','中南海',10,5
    insert into  #bbb select '香烟','本地','XXXOOO',13,8
    
    
    insert into  #bbb select '香烟','国内','白沙',18,5
    insert into  #bbb select '香烟','国内','芙蓉王',30,25
    
    insert into  #bbb select '香烟','进口','rrr',90,30
    insert into  #bbb select '香烟','进口','tttt',30,20
    ---------------------------------------------------------
    insert into  #bbb select '食品','全胜','全胜食品',100,1
    insert into  #bbb select '食品','闵城','XXX',130,8
    
    
    insert into  #bbb select '食品','哇哈哈','矿泉水',208,1
    insert into  #bbb select '食品','百事','百事可乐',300,2.5
    
    insert into  #bbb select '食品','可口可乐','可口可乐',250,3
    insert into  #bbb select '食品','oooo','tttt',30,20
    ------------------------------------------------------
    
    
    select 
    case when grouping([小类]) = 1 then [大类] else '' end as [大类],
    case when grouping([酒水名称]) = 1 then [小类] else '' end as [小类],
    [酒水名称],
    case when grouping([酒水名称]) = 1 then null else min([单价])end as[单价],
    sum([数量])as [数量],
    sum([数量]*[单价])as[总额] from #bbb
    group by [大类],[小类],[酒水名称] with rollup
    having grouping([大类]) = 0
    order by grouping([大类])desc,
    case when grouping([大类]) = 0 then [大类] end desc,
    grouping([小类])desc,
    case when grouping([小类]) = 0 then [小类] end desc,
    grouping(酒水名称)desc,
    case when grouping(酒水名称) = 0 then 酒水名称 end desc
    
    drop table #bbb

    执行结果如下:

  • 相关阅读:
    window C/C++ 简单的IDE编译器
    ubuntu 安装 lamp
    架构设计
    linux 性能分析
    wifi基本原理
    openwrt 编译
    学习笔记day5:inline inline-block block区别
    脱离原来文档流产生浮动框
    meta标签清理缓存
    百度web前端面试2015.10.18
  • 原文地址:https://www.cnblogs.com/demo8/p/3081897.html
Copyright © 2011-2022 走看看