如何用SQL分别统计数据库中同一列内男女两个值的数量?
分别统计男女人数的SQL方法
方法一:按性别分组统计(返回两行结果)
这是最直观的方式,通过GROUP BY将相同性别的数据分组,再用COUNT()统计每组的人数:
SELECT spol AS 性别, count(id_osb) AS 人数 FROM ds_osebe WHERE spol IN ('M', 'Z') GROUP BY spol;
说明:
WHERE spol IN ('M', 'Z')和你原来的OR逻辑等价,但写法更简洁GROUP BY spol会把性别相同的记录归为一组- 最终结果会返回两行,分别展示男性('M')和女性('Z')的人数
方法二:条件聚合(返回一行两列结果)
如果希望把男女人数放在同一行的两个列里,可以用条件聚合的方式:
SELECT COUNT(CASE WHEN spol = 'M' THEN id_osb END) AS 男性人数, COUNT(CASE WHEN spol = 'Z' THEN id_osb END) AS 女性人数 FROM ds_osebe WHERE spol IN ('M', 'Z');
说明:
CASE语句会判断每条记录的性别,符合条件时返回id_osb,否则返回NULLCOUNT()函数会自动忽略NULL值,从而分别统计出男女的人数
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

