gpt4 book ai didi

sql - AVG , group by, WHERE AVG greater (>) 问题

转载 作者:行者123 更新时间:2023-12-02 00:57:42 27 4
gpt4 key购买 nike

这是我的数据库

CREATE TABLE korisnici(
name VARCHAR(30) NOT NULL,
amount DECIMAL(65,2)
);

INSERT INTO korisnici VALUES
("Marina",20.10),
("Petar",300.50),
("Ivana",100.70),
("Tomislav",50.20),
("Ivana",80.60),
("Petar",10.40),
("Marina",80.50),
("Ivana",70.50),
("Marina",130.20),
("Robert",60.20),
("Blanka",130.20),
("Blanka",220.40),
("Tomislav",150.20);

我想从列表中获取所有名字,这些名字的所有数量的平均数量大于 150。就像我试过的那样

SELECT name, AVG(amount) AS avg FROM `korisnici` WHERE avg > 150 GROUP BY name

但是我的查询失败了,出现错误“‘where 子句’中的未知列‘avg’”。有人可以给我提示吗。

最佳答案

您不能在WHEREJOINHAVING 子句中使用列别名,因此您需要重复表达式,但这不是唯一的问题。在对聚合结果进行过滤时,应使用 HAVING 子句而不是 WHERE:

SELECT name, AVG(amount) AS avg 
FROM `korisnici`
GROUP BY name
HAVING AVG(amount) > 150

原因是 WHERE 子句在分组和聚合之前应用(并且用于确定哪些记录被分组和聚合),而 HAVING 在聚合之后 应用。

关于sql - AVG , group by, WHERE AVG greater (>) 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32574707/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com