为什么不能在where子句中使用Count()运算符?我如何解决这个问题?
我想编写一个查询返回小镇,并从每个小镇选手的数量大于5为什么不能在where子句中使用Count()运算符?我如何解决这个问题?
我的查询选手的数量现在看起来是这样的:
select hometown, count(hometown) from marathon2016 where count(hometown) > 5 group by hometown order by count(hometown) desc;
但sqlite3的这一回应:
Error: misuse of aggregate: count()
什么我做错了什么,为什么不能我使用COUNT()在这里,我就改用什么。
尝试以下操作:
select
hometown,
count(hometown) as hometown_count
from
marathon2016
group by
hometown
having
hometown_count > 5
order by
hometown_count desc;
当你试图在WHERE原因使用聚合函数(如count
),你通常是寻找,而不是为HAVING WHERE:
select hometown, count(hometown)
from marathon2016
group by hometown
having count(*) > 5
order by count(*) desc
你不能在WHERE原因使用聚合,因为聚集在多个行计算(由GROUP BY指定)但如果是用于过滤各行,以确定哪些行集GROUP BY将被应用到(即WHERE在分组之前发生并在分组后应用聚合)。
真棒,谢谢!如果 –
@BryceEdwards这个答案帮助你,你需要通过点击投票按钮下方的复选标记接受它。这样其他访问者可以很容易地看到你如何解决你的问题。谢谢! –
那么,有没有办法只能获得其中只有5人以上的城镇中列出的结果? –
@BryceEdwards我误解了你的问题。更新了我的答案。 –