在SQL中使用Over()函数时排除字段

时间:2014-10-23 15:08:07

标签: sql window-functions

我在sql中使用count(field_name) Over(partition by field_name)函数,并希望只显示大于1的值。我发现我不能在where或having子句中使用聚合函数,并且希望有另一种方法,简短编写函数,因为我没有写权限。

非常感谢任何帮助。 感谢

1 个答案:

答案 0 :(得分:1)

COUNT排除了null,因此您可以通过引入case表达式来添加一些逻辑,而不是计算列本身:

COUNT(CASE WHEN field_name > 1 THEN field_name ELSE NULL END) OVER (PARTITION BY field_name) f

编辑:
我似乎误解了原来的问题。如果要过滤掉count函数的结果,则需要子查询:

SELECT office, cnt
FROM   (SELECT office, COUNT(office) OVER(PARTITION BY office) cnt
        FROM   my_table)
WHERE  cnt > 1