为什么 HAVING col > AVG(col) 不返回任何行?

Why is HAVING col > AVG(col) returning no rows?

此视图显示每个劫匪、他们入狱的年数、实施的抢劫次数和他们的总收入(21 行)。

然后我尝试创建另一个视图以进一步操作上面视图中的数据。我希望我的新视图仅显示 NoYears(入狱服刑)= 0 且 NoRobberies 大于平均抢劫次数的劫匪的昵称。

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

然而,当我尝试 SELECT * FROM ActiveRobbers3 时,returns 没有行。谁能看到我的问题?干杯

也许这行得通:

CREATE VIEW ActiveRobbers3
AS
SELECT Nickname
FROM ActiveRobbers2, 
(SELECT AVG(AVG_NoRobberies) as AVG_NoRobberies FROM ActiveRobbers2) as b
WHERE NoYears = 0
AND NoRobberies > b.AVG_NoRobberies

你的问题含糊不清。 table 的所有数据或与特定 "Nickname" 有关的数据的平均值 NoRobberies

案例 1:NoRobberies 所有数据的平均值

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

案例 2:相应昵称 NoRobberies 的平均值 "Nickname"

CREATE VIEW ActiveRobbers3
AS
SELECT Nickname,NoRobberies

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

注意:仅当昵称至少有两行具有不同的 NoRobberies 时,case-2 才会提供数据。示例代码适用于 MySQL