为什么会出错?
select title, mx-mn
from (select title, Rating.mID, max(stars) as mx, min(stars) as mn from Movie, Rating
where Movie.mID = Rating.mID
group by mx-mn, title)
我需要按评级差价(max-min)排序,然后按标题
排序答案 0 :(得分:0)
您的GROUP BY子句与GROUP BY max(starts)-min(stars)
相同。
max()
和min()
返回组中的最大/最小值。但是,GROUP BY子句中的表达式用于确定如何对行进行分组 - 尚不可能在尚不存在的组上计算聚合。
无论如何,要对行进行排序,您需要使用ORDER BY而不是GROUP BY。 但GROUP BY仍然需要为每部电影获得一行:
SELECT title,
max(stars) - min(stars) AS spread
FROM Movie
JOIN Rating USING (mID)
GROUP BY mID
ORDER BY spread ASC, title;
答案 1 :(得分:0)
您应该通过这种方式改变群组(不要使用父查询别名)
select title, mx-mn
from (select title, Rating.mID, max(stars) as mx, min(stars) as mn from Movie, Rating
where Movie.mID = Rating.mID
group by title, Rating.mID)