group by rollup和 group by cube区别
一、分组依据为一列时
1、使用group by分组查询
select exam_no,avg (result) as 平均分 from result_info
group by exam_no
查询结果如下:
2、使用group by rollup 和group by cube的结果
select exam_no,avg(result) as 平均分 from result_info
group by rollup(exam_no)
select exam_no,avg(result) as 平均分 from result_info
group by cube(exam_no)
这两个的查询结果都是一样的:
这时候就是比使用group by 多了一个计算所有数据的平均分
二、分组依据为2列时
1、使用group by分组查询
select exam_no,course_name,avg (result) as 平均分 from result_info
group by exam_no,course_Name
查询结果如下:
将根据考试编号和课程名称2列进行分组
2、使用group by rollup分组查询:
select exam_no,course_name,avg (result) as 平均分 from result_info
group by rollup(exam_no,course_Name)
查询结果如下:
比使用group by多的计算:
① 分别计算了考试编号不同的平均值——蓝色框
② 计算所有数据的平均值——红色框
3、使用group by cube查询
select exam_no,course_name,avg (result) as 平均分 from result_info
group by cube(exam_no,course_Name)
查询结果如下:
比使用group by多的计算:
① 分别计算课程名称不同的平均值——蓝色框
② 分别计算了考试编号不同的平均值——黑色框
③ 计算了总数据的平均值——红色框
比使用group by rollup多的计算:
① 分别计算课程名称不同的平均值——蓝色框