sql - 带有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
在这种情况下使用。即使在尝试了这么多次之后,我也无法正确使用语法。
解决方案
我假设你需要另一个计数?你需要类似的东西:
SUM(CASE WHEN (person.salary::numeric < avg_salary.avg) THEN 1 ELSE 0 END) AS email_PGA
推荐阅读
- c++ - 在 C API 中加载预训练的 tensorflow 模型
- java - 如何修复 HTTP 状态 500 索引错误?
- python - Python中的频移键控
- reactjs - ReactJs/NextJs - 有条件地渲染互斥组件而不影响加载时间
- maxima - 最大值:从方程中消除变量
- scala - Gatling - 超出 GC 开销限制
- arrays - 在 Bash 中使用数组键列表时开始循环到特定索引
- sql - 尝试使用标识列编写存储过程来创建我的表值
- prolog - 如何在 prolog 中定义字符串连接运算符?
- spring-boot - Spring Boot JASYPT 失败无法绑定“spring.datasource.password”下的属性