首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >计算值,并在没有空值的情况下对其进行分组

计算值,并在没有空值的情况下对其进行分组
EN

Stack Overflow用户
提问于 2020-11-09 13:28:06
回答 2查看 26关注 0票数 0

如何合并这些值而不包括“0”值。

代码语言:javascript
运行
复制
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

我的输出

代码语言:javascript
运行
复制
YEAR   MAN   FEMALE
1970   2      0
1970   0      5
1971   3      0
1971   0      2

期望输出

代码语言:javascript
运行
复制
YEAR   MAN  FEMALE
1970    2    5
1971    3    2

我试过从男性和女性的另一个计数,但这是行不通的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-09 13:30:09

您的查询应该有效,不过我建议将其写为:

代码语言:javascript
运行
复制
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;

您的结果表明,您确实在使用以下内容:

代码语言:javascript
运行
复制
GROUP BY 1, gender
票数 0
EN

Stack Overflow用户

发布于 2020-11-09 13:36:33

您只需通过语法器更正您的组,

代码语言:javascript
运行
复制
Group By DATE_PART('YEAR', BIRTHDATE)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64752603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档