我有一个电影评级网站的表格,看上去如下所示:
我想写一个查询,给出最慷慨的评审员最喜欢的电影的名字。目前,我已将任务分为两部分:
-finding是评论者最喜欢的电影的名字:
SELECT DISTINCT Title FROM Movies
NATURAL JOIN Ratings
WHERE rating IN (SELECT MAX(rating) FROM Ratings)
-finding最高平均评级:
SELECT reviewerID, AVG(rating) AS avg_rating
FROM Ratings
GROUP BY reviewerID
ORDER BY avg_rating DESC LIMIT 1
但我不知道如何将这两个查询连接起来。使用子查询,它不能工作,因为我不能在子查询中限制用户。有人知道如何连接这两个查询吗?或者是不使用子查询的方法?
发布于 2016-04-06 11:36:16
SELECT m.title
FROM movies m
JOIN ratings r
ON r.movieid = m.movieid
JOIN
( SELECT reviewerID
FROM Ratings
GROUP
BY reviewerID
ORDER
BY AVG(rating) DESC
LIMIT 1
) x
ON x.reviewerid = r.reviewerid
ORDER
BY r.rating DESC
LIMIT 5;
或者类似的东西
发布于 2016-04-06 10:18:34
你试过这样的方法吗?
SELECT Title FROM Movies
WHERE movieID = (
SELECT movieID FROM Ratings WHERE reviewerID=(
SELECT reviewerID, AVG(rating) AS avg_rating
FROM Ratings
GROUP BY reviewerID
ORDER BY avg_rating DESC LIMIT 1
)
ORDER BY rating DESC
LIMIT 1
);
发布于 2016-04-06 10:24:03
下面是一个使用GROUP BY
、ORDER BY
和LIMIT 1
的解决方案。
SELECT m.Title
FROM Movies as m INNER JOIN Ratings as r USING(movieID)
GROUP BY m.movieID
ORDER BY AVG(r.rating) DESC
LIMIT 1
https://stackoverflow.com/questions/36448107
复制相似问题