Sql 计算值并将其分组,但不包含空值
如何在不包含“0”值的情况下合并这些值Sql 计算值并将其分组,但不包含空值,sql,postgresql,Sql,Postgresql,如何在不包含“0”值的情况下合并这些值 SELECT DATE_PART('YEAR', BIRTHDATE), SUM(CASE WHEN GENDER = 'M' THEN 1 ELSE 0 END) MAN, SUM(CASE WHEN GENDER = 'F' THEN 1 ELSE 0 END) as FEMALE FROM TABLE GROUP BY 1 我的输出 YEAR MAN FEMALE 1970 2 0 1970 0 5 1971
SELECT DATE_PART('YEAR', BIRTHDATE), SUM(CASE WHEN GENDER = 'M' THEN 1 ELSE 0 END) MAN,
SUM(CASE WHEN GENDER = 'F' THEN 1 ELSE 0 END) as FEMALE FROM TABLE
GROUP BY 1
我的输出
YEAR MAN FEMALE
1970 2 0
1970 0 5
1971 3 0
1971 0 2
期望输出
YEAR MAN FEMALE
1970 2 5
1971 3 2
我已经尝试了另一个男人和女人的计数,但这不起作用。你的查询应该可以,尽管我建议写为:
SELECT DATE_PART('YEAR', BIRTHDATE) as year,
COUNT(*) FILTER (WHERE GENDER = 'M') as MAN,
COUNT(*) FILTER (WHERE GENDER = 'F') as FEMALE
FROM TABLE
GROUP BY year;
您的结果表明您确实在使用以下内容:
GROUP BY 1, gender
您只需通过语法纠正您的分组
Group By DATE_PART('YEAR', BIRTHDATE)
我发现很难相信您的查询会返回指定的输出。您完全正确,这就是问题所在。我认为这不是一个大问题,如果我把我的性别也包括在内的话(我在上面的例子中没有写)