GROUP BY GROUPING SETS 在mysql使用
时间: 2024-05-10 19:16:07 浏览: 282
Oracle中用GROUPING SETS分组自定义汇总
5星 · 资源好评率100%
GROUP BY GROUPING SETS 是一种用于在 MySQL 中进行聚合操作的扩展语法。它提供了一种更灵活的方法来进行分组操作,可以同时对多个列进行分组,并且可以生成多个分组集。
下面是一个示例 SQL 查询,使用 GROUP BY GROUPING SETS 来计算不同城市、不同性别、不同年龄段的人口数量:
```
SELECT city, gender,
CASE
WHEN age BETWEEN 0 AND 18 THEN '0-18'
WHEN age BETWEEN 19 AND 35 THEN '19-35'
WHEN age BETWEEN 36 AND 50 THEN '36-50'
ELSE '51+'
END AS age_group,
COUNT(*) AS population
FROM people
GROUP BY GROUPING SETS ((city, gender, age_group), (city, gender), (city), ())
ORDER BY city, gender, age_group;
```
在这个查询中,我们首先根据城市、性别和年龄段对人口进行分组。然后我们再对城市和性别、城市、以及所有行进行分组。最后,我们使用 ORDER BY 子句对结果进行排序。
注意,由于 GROUP BY GROUPING SETS 是 MySQL 的扩展语法,因此可能不适用于其他 SQL 数据库。
阅读全文