首页 > 数据库技术 > 详细

MySQL WITH ROLLUP

时间:2021-09-05 19:13:31      阅读:35      评论:0      收藏:0      [点我收藏+]

一、数据准备

1、表结构

CREATE TABLE `emp` (
  `ename` varchar(50),
  `sex` varchar(50),
  `height` double,
  `weight` double,
  `dept` varchar(50)
) 

2、表数据

INSERT INTO emp (ename, sex, height, weight, dept) VALUES(‘刘备‘, ‘男‘, 170.0, 150.0, ‘EP‘);
INSERT INTO emp (ename, sex, height, weight, dept) VALUES(‘关羽‘, ‘男‘, 180.0, 190.0, ‘EP‘);
INSERT INTO emp (ename, sex, height, weight, dept) VALUES(‘张飞‘, ‘男‘, 190.0, 200.0, ‘EP‘);
INSERT INTO emp (ename, sex, height, weight, dept) VALUES(‘貂蝉‘, ‘女‘, 160.0, 100.0, ‘IBT‘);
INSERT INTO emp (ename, sex, height, weight, dept) VALUES(‘小乔‘, ‘女‘, 150.0, 90.0, ‘IBT‘);
INSERT INTO emp (ename, sex, height, weight, dept) VALUES(‘吕布‘, ‘男‘, 200.0, 210.0, ‘IBT‘);

二、开始实验

1、group by sex,dept,ename

SELECT 
sex,
dept,
ename,
COUNT(*) AS emp_cnt,
SUM(weight) AS weight_num
FROM emp 
GROUP BY 
sex,
dept,
ename
WITH ROLLUP
;

技术分享图片

2、group by dept,sex,ename

SELECT 
dept,
sex,
ename,
COUNT(*) AS emp_cnt,
SUM(weight) AS weight_num
FROM emp 
GROUP BY 
dept,
sex,
ename
WITH ROLLUP
;

技术分享图片

三、实验总结

rollup,上卷、汇总之意
通过此次试验可以看出,上卷的规律是从group by col3 > col2 > col1
想汇总出较为工整的结果集,需要将group by的col,按粒度大小进行排列,粗粒度的放到前面,细粒度的放到后面

四、参考资料
1、mysql聚合函数rollup和cube
https://blog.csdn.net/liuxiao723846/article/details/48970443

MySQL WITH ROLLUP

原文:https://www.cnblogs.com/renguanyu/p/15223885.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!