首页 > 解决方案 > 带有case语句的sql计数查询

问题描述

我必须从三个表 avg_salary、person 和 emails 中执行查询。这个简单的 sql 查询工作正常。

SELECT avg_salary.id, COUNT(emails.message_from) AS email_PGA
FROM avg_salary, person, emails
WHERE person.works_in = avg_salary.id    
AND person.email_address = emails.message_from
AND person.salary::numeric > avg_salary.avg
GROUP BY avg_salary.id

但我想添加另一列email_PLA,条件为 when person.salary::numeric < avg_salary.avg。我可以通过再次加入整个查询来做到这一点。但我想CASE在这种情况下使用。即使在尝试了这么多次之后,我也无法正确使用语法。

标签: sqlpostgresqlcase

解决方案


我假设你需要另一个计数?你需要类似的东西:

SUM(CASE WHEN (person.salary::numeric < avg_salary.avg) THEN 1 ELSE 0 END) AS email_PGA

推荐阅读