使用的表:
CREATE TABLE `b` (
`eid` INT(11) DEFAULT NULL,
`month` DATETIME DEFAULT NULL,
`sals` DECIMAL(10,2) DEFAULT NULL
) ENGINE=INNODB DEFAULT CHARSET=latin1
当只有一个分组条件的时候,对整个表汇总聚合;
SELECT
DATE_FORMAT(MONTH,'%Y-%m') m,
SUM(sals) s
FROM
b
GROUP BY
DATE_FORMAT(MONTH,'%Y-%m')
WITH ROLLUP
最后多出一行,对每个月份的总额汇总。
当有两个分组条件的时候,对第一个和第二个分组条件聚合,最后再根据第一个分组条件聚合。
SELECT
DATE_FORMAT(MONTH,'%Y-%m'),
eid,
SUM(sals)
FROM b
GROUP BY DATE_FORMAT(MONTH,'%Y-%m'),eid
WITH ROLLUP
对每个月份的所有员工销售总额求和,最后再把所有月份的总额求和。
with rollup做的聚合与查询得聚合相同。