这是一个显示每个抢劫犯,他们在监狱中的年数,犯下的抢劫数和他们的总收入(21行)的视图。
sql - 为什么HAVING col> AVG(col)不返回任何行?-LMLPHP
然后我试图创建另一个视图来进一步操作上面视图中的数据。我希望我的新观点只显示盗贼的昵称,这些盗贼的年数(在监狱中服刑)为0,并且其诺比里斯数大于平均抢劫数。

CREATE VIEW ActiveRobbers3
AS
SELECT Nickname
FROM ActiveRobbers2
WHERE NoYears = 0
GROUP BY Nickname, NoRobberies
HAVING NoRobberies > AVG(NoRobberies);

但是,当我尝试SELECT * FROM ActiveRobbers3时,这不会返回任何行。有人能看出我的问题吗?干杯

最佳答案

你的问题很含糊。表中所有数据或与特定“昵称”相关的数据的平均值NoRobberies
案例1:所有数据的NoRobberies平均值

CREATE VIEW ActiveRobbers3
AS
SELECT Nickname
FROM ActiveRobbers2
WHERE NoYears = 0
AND NoRobberies > (select AVG(NoRobberies) from ActiveRobbers2);

案例2:每个昵称“昵称”的平均值NoRobberies
CREATE VIEW ActiveRobbers3
AS
SELECT Nickname,NoRobberies

FROM ActiveRobbers2
WHERE NoYears = 0
GROUP BY Nickname
Having NoRobberies > AVG(NoRobberies);

注意:只有当昵称至少有两行具有不同NoRobberies时,case-2才会给出数据。示例代码是针对MySQL的

10-06 11:25