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
代码一运行图
代码二运行图
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
运行三:
运行4:
代码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运行
代码6运行