You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中COUNT DISTINCT CASE表达式计数问题求助

解决SQL统计满足条件的唯一position_id数量问题

你的SQL语句逻辑错误,导致无法得到正确结果。原语句的CASE分支返回的是1或0,而非position_id本身,所以COUNT(DISTINCT ...)只会统计1和0这两个值的数量,自然不符合需求。

正确的写法应该是在CASE中仅返回符合条件的position_id,不符合条件时返回NULL(COUNT函数会自动忽略NULL值):

COUNT(DISTINCT CASE WHEN internal_only = 'true' AND p.position_id IS NOT NULL THEN p.position_id END) AS I_Roles

逻辑说明:

  • 当internal_only等于'true'且p.position_id不为空时,返回对应的position_id
  • 其他情况返回NULL,COUNT会忽略这些NULL
  • DISTINCT确保统计的是唯一的position_id值

如果你的业务场景中p.position_id本身不会出现NULL值,可以简化为:

COUNT(DISTINCT CASE WHEN internal_only = 'true' THEN p.position_id END) AS I_Roles

内容的提问来源于stack exchange,提问作者user8272537

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 04:04:54