这是一个显示每个抢劫犯,他们在监狱中的年数,犯下的抢劫数和他们的总收入(21行)的视图。
然后我试图创建另一个视图来进一步操作上面视图中的数据。我希望我的新观点只显示盗贼的昵称,这些盗贼的年数(在监狱中服刑)为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的