如何合并这些值而不包括“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 3 0
1971 0 2期望输出
YEAR MAN FEMALE
1970 2 5
1971 3 2我试过从男性和女性的另一个计数,但这是行不通的。
发布于 2020-11-09 13:30:09
您的查询应该有效,不过我建议将其写为:
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发布于 2020-11-09 13:36:33
您只需通过语法器更正您的组,
Group By DATE_PART('YEAR', BIRTHDATE)https://stackoverflow.com/questions/64752603
复制相似问题