WITH ROLLUP 的用法
一、建表语句和数据
1.建表
CREATE TABLE `test` (
`id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
`provinceName` varchar(32) DEFAULT NULL,
`cityName` varchar(32) DEFAULT NULL,
`countyName` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;
2.数据,共9条
代码如下(示例):
INSERT INTO `test`(`id`, `provinceName`, `cityName`, `countyName`) VALUES ('26', '广东省', '茂名市', '其他区');
INSERT INTO `test`(`id`, `provinceName`, `cityName`, `countyName`) VALUES ('292', '广东省', '深圳市', '其他区');
INSERT INTO `test`(`id`, `provinceName`, `cityName`, `countyName`) VALUES ('294', '广东省', '潮州市', '湘桥区');
INSERT INTO `test`(`id`, `provinceName`, `cityName`, `countyName`) VALUES ('307', '广东省', '深圳市', '南山区');
INSERT INTO `test`(`id`, `provinceName`, `cityName`, `countyName`) VALUES ('359', '广东省', '潮州市', '潮安县');
INSERT INTO `test`(`id`, `provinceName`, `cityName`, `countyName`) VALUES ('386', '广东省', '深圳市', '福田区');
INSERT INTO `test`(`id`, `provinceName`, `cityName`, `countyName`) VALUES ('391', '广东省', '汕尾市', '海丰县');
INSERT INTO `test`(`id`, `provinceName`, `cityName`, `countyName`) VALUES ('397', '广东省', '汕尾市', '陆河县');
INSERT INTO `test`(`id`, `provinceName`, `cityName`, `countyName`) VALUES ('400', '山东省', '济南市', '市中区');
二、WITH ROLLUP:在group分组字段的基础上再进行统计数据。
实例,以下sql不加入WITH ROLLUP的时候,意思就是分组查询相同省、市、区的数据。
SELECT
id,
provinceName,
cityName,
countyName,
COUNT( id ) AS num
FROM
test
GROUP BY
provinceName,
cityName,
countyName WITH ROLLUP;
加上WITH ROLLUP之后,由于是多字段的group up ,可以进一步统计,
1、相同省、市、区的数据。
2、相同省、市的数据。
3、相同省的数据
4、全部数据
这样可以非常直观的显示出各种情况的总数