mysql 对一张表分组后再分组
时间: 2023-07-28 22:31:56 浏览: 134
可以使用 MySQL 中的嵌套查询来对一张表进行多次分组。具体可以按照以下步骤进行:
1. 针对第一次分组,使用 GROUP BY 子句对表按照需要分组的列进行分组。例如,按照城市和性别分组:
```
SELECT city, gender, COUNT(*) as count
FROM table_name
GROUP BY city, gender;
```
2. 在第一次分组的结果基础上,进行第二次分组。这里需要使用嵌套查询,将第一次分组的结果作为子查询的输入。例如,按照城市分组计算每个城市的男性和女性数量:
```
SELECT city, SUM(male_count) as male_count, SUM(female_count) as female_count
FROM (
SELECT city, gender, COUNT(*) as count,
CASE WHEN gender = 'Male' THEN COUNT(*) END as male_count,
CASE WHEN gender = 'Female' THEN COUNT(*) END as female_count
FROM table_name
GROUP BY city, gender
) as sub_query
GROUP BY city;
```
在这个例子中,子查询中首先按照城市和性别进行了第一次分组,然后使用 CASE 语句计算每个性别的数量。在主查询中,我们按照城市对子查询的结果进行第二次分组,计算每个城市的男性和女性数量。
注意,在进行多次分组时,每个分组的列都需要在 GROUP BY 子句中列出。同时,为了避免出现歧义,列名最好使用别名进行重命名。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044901.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)