首页 > 解决方案 > 如何在 SQL 中选择

问题描述

我正在使用 2 个表,其中一个是 movie_score,其中包含 id、name 和 score。我有另一个表是 movie_cast,其中包含 mid、cid 和 name。Mid 是电影 ID,而 cid 是演员 ID。我必须做的问题如下:

查找平均电影得分最高的前 10 名(不同)演员。输出列表必须按分数排序(从高到低),然后,如果/当它们具有相同的平均分数时,按字母顺序按演员名称排序。搜索不得包括:(a) 得分低于 50 的电影和 (b) 出现在少于 3 部电影中的演员(同样,仅计算得分至少为 50 的电影的出现次数)。(预期输出:cid、cname、平均分)

我试图将命令放在一起,但到目前为止,这就是我所能得到的:

SELECT DISTINCT movie_cast.cid, movie_cast.cname, FROM movie_score INNER JOIN movie_cast ON movie_score.id=movie_cast.mid ORDER BY cname LIMIT 10;

movie-name-score.txt 与 movie_score 一起使用:

.txt 文件示例

9、《星球大战3:西斯的复仇3D》,80

24214,“纳尼亚传奇:狮子、女巫和魔衣橱”,76

1789 年,“世界大战”,74

10009,《星球大战2:克隆人的进攻3D》,67

771238285,“温暖的身体”,-1

770785616,“Z世界大战”,-1

771303871,“战争女巫”,89

771323601,《世界大战真实故事》,-1

movie-cast.txt 与 movie_cast 一起使用:

例子:

9,162652153,“海登·克里斯滕森”

9,162652152,“伊万·麦格雷戈”

9,418638213,“肯尼贝克”

9,548155708,“格雷姆·布伦德尔”

9,358317901,“杰里米·布洛克”

9,178810494,“安东尼丹尼尔斯”

9,770726713,“奥利弗·福特·戴维斯”

9,162652156,“塞缪尔·杰克逊”

9,162655731,“詹姆斯·厄尔·琼斯”

我希望有类似的输出:

162655731,“詹姆斯·厄尔·琼斯”,他们看过的电影的平均分

有谁知道创建此命令的最佳方法?

标签: sql

解决方案


推荐阅读