ROLLUP、CUBE、GROUP BY的使用区别
1、ROLLUP:根据维度在数据结果集中进行的聚合操作,可多维度
SELECT count(*) num,MONTH(register_time) times,`status` FROM `user` group by times,`status` WITH ROLLUP;
使用ROLLUP多维度聚合操作可以,高效率的查出(个人需求):每个月有多少有效用户、无效用户及总用户量。
维度分析:注:第一维度(group by后的第一个属性)不当单独为空;不支持ORDER BY
表示最后的聚合及总数-无维度;
表示5月注册的总人数-times是维度;
表示5月的有效用户的人数-times、status是维度
引用说明:
select empid,custid, year(orderdate) year, sum(qty) sum from rollup group by empid,custid,year(orderdate) with rollup;
其中(null,null,null)表示最后的聚合
(empid,custid,year)表示对这3列进行分组的聚合结果
(empid,custid,null)表示对(empid,custid)两列进行分组的聚合结果
(empid,null,null)表示仅对(empid)一列进行分组的聚合结果
2、CUBE mysql版本不支持
This version of MySQL doesn't yet support 'CUBE'
3、GROUP BY在多维度查询中,效率低,需要遍历表多次