我在sql中使用count(field_name) Over(partition by field_name)
函数,并希望只显示大于1的值。我发现我不能在where或having子句中使用聚合函数,并且希望有另一种方法,简短编写函数,因为我没有写权限。
非常感谢任何帮助。 感谢
答案 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