PostgreSQL左连接下特定列唯一值计数实现求助
左连接中统计特定条件下唯一记录的解决方法
直接修改后的有效语法
把你当前的统计语句改成下面这样,记得替换x.唯一标识列为你表中真正唯一的字段(比如主键ID、业务唯一编码):
count(distinct case when x.priorities = 112 then x.唯一标识列 end) as Urgent
为什么原来的写法不行?
你之前的语句是统计所有符合priorities=112的行数,但如果直接给case的返回值加distinct,所有符合条件的行都会返回1,去重后结果只能是1,根本没法统计真正的唯一记录数。必须针对唯一标识列做去重,才能准确数出符合条件的独立记录数量。
额外提醒
- 一定要确认你用的唯一标识列在表中是真的唯一的,不然统计结果还是会不准。
- 左连接会带来重复行,这正是你需要去重的原因,用
distinct针对唯一列过滤,就能消除连接产生的重复计数问题。
内容的提问来源于stack exchange,提问作者SANAL RAJ
相关产品推荐
相关产品推荐

