SQL GROUP BY 和 HAVING

标签 sql group-by having-clause

所以我不会再遇到这个错误。

 select distinct substr(CUSTZIP, 1,5), AVG(CUSTBAL), custcity, custstate
 from customer
 group by CUSTCITY, custstate
 having CUSTSTATE = 'wa' AND avg(CUSTBAL) >100;

错误显示“不是 GROUP BY 表达式”,并建议将“substr(CUSTZIP, 1,5), AVG(CUSTBAL)”添加到 group by 子句中,但这也不起作用。 我想要做的是仅列出西澳州各城市的邮政编码和余额平均值,并且余额超过 100 美元。 有人可以帮我指出我的错误吗?我确信它很简单,但我似乎无法以我的初学者水平得到它。

最佳答案

问题不在于 having 子句。它是 substr(CUSTZIP, 1, 5)。这是解决该问题的一种方法:

select substr(CUSTZIP, 1, 5), AVG(CUSTBAL), custcity, custstate
from customer
group by CUSTCITY, custstate, substr(CUSTZIP, 1, 5)
having CUSTSTATE = 'wa' AND avg(CUSTBAL) > 100;

顺便说一下,group by 几乎不需要 select unique

或者,您可以使用聚合函数:

select max(substr(CUSTZIP, 1, 5)), AVG(CUSTBAL), custcity, custstate
from customer
group by CUSTCITY, custstate
having CUSTSTATE = 'wa' AND avg(CUSTBAL) > 100;

关于SQL GROUP BY 和 HAVING,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26007959/

相关文章:

sql - 如果聚合值为空,则跳过整行

sql - Oracle 中相当于 SQL Server 的 SET NOCOUNT ON 的是什么?

mysql - 错误 1045 (28000) [警告] 在命令行界面上使用密码可能不安全

python - 如何选择列而不在 group by 子句中放置非聚合列

使用 DISTINCT 和 GROUP BY 后 mySQL 查询很慢?

mysql - 选择 SUM 大于 X 的行

mysql - 为什么第二次运行 select 查询后返回 NULL

python - 如何将 SQL 查询限制为非破坏性的?

sql - group by,union,Union为多个列选择不同的值之间有什么区别?

sql - HAVING 子句中的 WINDOW 函数替代