sql serever 分类汇总 cube rollup 的使用方法

CUBE 与 ROLLUP的使用

基础

简介

CUBE更强大(显示的行数更多)

CUBE

  • groupby 提供的行,各个汇总行(子组合的汇总、汇总行–每个可能的组和子组)

ROLLUP

  • 会显示每个分类,除了 group by 提供的行还包括汇总行(每个可能的组没有子组 ,具体是哪个组与group by 后的字段顺序有关,也就是说汇总的依据与select 后面的行无关)

说明 使用方法

说明

代码一(针对 CUBE)
这里以查询teaching库中student表,统计各专业男生、女生的人数,每个专业学生人数和男生人数、女生总人数以及所有学生人数
这里是查询
代码二(针对 ROLLUP)
这里以查询teaching库中student表,统计各专业男生、女生的人数,每个专业的总人数和所有学生人数
代码一和代码二的差异体现在 第14行和第15行

use teaching 
select specialty as 专业,ssex as 性别,count(*) as 人数
from student
group by ssex,specialty
with cube

代码二

select specialty as 专业,ssex as 性别,count(*) as 人数
from student
group by specialty,ssex
with rollup

代码一运行图

cube
代码二运行图
rollup
rollup

进阶

简介

CUBE按第一个条件列排序,再按第二个条件列排序,以此类推
ROLLUP 只显示最高列
cube先按照 specialty 排序
代码三

use teaching 
select specialty as 专业,ssex as 性别,count(*) as 人数
from student
group by ssex,specialty
with cube

cube先按照 ssex排序
代码四

use teaching 
select specialty as 专业,ssex as 性别,count(*) as 人数
from student
group by specialty,ssex
with cube

运行三:
cube
运行4:
cube

代码5
rollup 按照 specity排序

select specialty as 专业,ssex as 性别,count(*) as 人数
from student
group by specialty,ssex
with rollup

代码6
rollup 按照 specialty排序

select specialty as 专业,ssex as 性别,count(*) as 人数
from student
group by ssex,specialty
with rollup

代码5运行
rollup
代码6运行
rollup

发布了11 篇原创文章 · 获赞 0 · 访问量 197

猜你喜欢

转载自blog.csdn.net/gongranr/article/details/103812240