如何编写SQL按年龄分组统计男性(m)和女性(f)的数量
实现按年龄分组统计不同性别数量的SQL方案
核心用条件聚合逻辑实现,不需要子查询,性能优异,兼容所有主流SQL数据库(MySQL、PostgreSQL、Oracle、SQL Server等):
SELECT age, COUNT(CASE WHEN gander = 'm' THEN 1 END) AS count_m, COUNT(CASE WHEN gander = 'f' THEN 1 END) AS count_f FROM person GROUP BY age ORDER BY age;
补充说明
- 如果你使用的是MySQL,可以用更简洁的
SUM + IF写法:
SELECT age, SUM(IF(gander = 'm', 1, 0)) AS count_m, SUM(IF(gander = 'f', 1, 0)) AS count_f FROM person GROUP BY age ORDER BY age;
- 上述语句执行后返回的结果和你给出的示例数据完全匹配:
| age | count_m | count_f |
|---|---|---|
| 21 | 2 | 1 |
| 22 | 1 | 1 |
- 如果你表中的性别字段实际是拼写正确的
gender,替换掉SQL里的gander即可。
内容的提问来源于stack exchange,提问作者Taufiq
相关产品推荐
相关产品推荐

