记录:mysql中的WITH ROLLUP

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、全部数据
这样可以非常直观的显示出各种情况的总数
在这里插入图片描述


版权声明:本文为JGYBZX_G原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。