使用其他条件

时间:2017-02-23 04:32:01

标签: postgresql

我有一个名为entries的表,其中包含以下列:case_idnumberfiled_on

如果我只是在查找case_idnumber相同的重复项,我会使用以下查询:

SELECT case_id, number, count(*) FROM entries GROUP BY case_id, number HAVING count(*) > 1;

但我想按照一个额外的标准进行过滤,即至少有一个重复行的字段为null

我认为以下查询可行,但我认为它给了我重复的行,其中所有重复项都filed_on设置为null,而不是重复的行,其中有一行或多行{ {1}}的{​​1}}:

filed_on

如何修改此查询以获取我想要的内容?

1 个答案:

答案 0 :(得分:1)

您想要一个在分组后检查的条件,而不是之前,即HAVING而不是WHERE。请注意,条件应该是分组字段或聚合之一(就像在SELECT中一样)。您应该能够计算满足条件的行数,例如this answer

SELECT case_id, number, count(*)
FROM entries
GROUP BY case_id, number
HAVING (count(*) > 1) AND (count(CASE WHEN filed_on IS NULL THEN 1 END) >= 1)

请参阅SQL Fiddle