use*_*241 1 sql database sqlite
基本上我到目前为止设法产生这个:
sqlite> SELECT city, COUNT(bname) AS sum FROM building GROUP BY city;
city sum
---------- ----------
Leeds 3
London 1
New York 2
Paris 1
Run Code Online (Sandbox Code Playgroud)
但是,我想要做的只是打印总和> 1的城市.我试过这个:
sqlite> SELECT city, COUNT(bname) AS sum FROM building WHERE sum>1 GROUP BY city;
Run Code Online (Sandbox Code Playgroud)
但我得到错误:
Error: misuse of aggregate: COUNT()
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么这不起作用,我会做什么呢?谢谢
如果要基于聚合函数限制结果集,请使用HAVING子句而不是以下位置:
SELECT city,
COUNT(bname) AS sum
FROM building
GROUP BY city
HAVING COUNT(bname) > 1;
Run Code Online (Sandbox Code Playgroud)
stackoverflow有很好的解释为什么你不能使用WHERE,但这里有一个简短的:
以下是执行SELECT时会发生的情况:
因为您正在执行GROUP BY来获取COUNT,所以您不能在WHERE子句上限制它,因为它已经发生了.