ROLLUP作用:ROLLUP子句实现在GROUP BY分组统计数据基础上再进行汇总统计。
假设有一张product_profit(产品销售利润)表,有id,product_id(产品id),sale_province(销售省份),profit(利润),sale_year(销售年份):
CREATE TABLE `product_profit` (`id` int(11) NOT NULL AUTO_INCREMENT,`product_id` int(11) NOT NULL COMMENT '产品id',`sale_province` varchar(32) DEFAULT NULL COMMENT '销售省份',`profit` decimal(10,2) NOT NULL COMMENT '利润',`sale_year` int(11) DEFAULT NULL COMMENT '销售年份',PRIMARY KEY (`id`)) ;
先看一下表中数据
SELECT * FROM `product_profit`;
这里要注意最后一行(id=13行),产品id为26的产品,profit列为900,sale_year和sale_province列值都是NULL。
单字段分组
统计每年利润
SELECT`sale_year`,SUM( `profit` ) `profit`FROM`product_profit`GROUP BY`sale_year`;
既统计每年利润,也统计总利润
SELECT`sale_year`,SUM( `profit` ) `profit`FROM`product_profit`GROUP BY`sale_year` WITH ROLLUP;