gpt4 book ai didi

sql - 对于所有评论者对,使得两位评论者都对同一部电影进行了评级,返回两位评论者的姓名

转载 作者:行者123 更新时间:2023-12-03 18:42:32 26 4
gpt4 key购买 nike

针对 SQL 问题的斯坦福自定进度类(class):

For all pairs of reviewers such that both reviewers gave a rating tothe same movie, return the names of both reviewers. Eliminateduplicates, don't pair reviewers with themselves, and include eachpair only once. For each pair, return the names in the pair inalphabetical order.

架构:

Movie ( mID, title, year, director ) 

有一部电影,其 ID 号为 mID、标题、发行年份和导演。

Reviewer ( rID, name ) 

ID号为rID的审稿人有特定姓名。

Rating ( rID, mID, stars, ratingDate ) 

评论者 rID 在特定的评分日期给电影 mID 评分(1-5)。

我的尝试:

Select R.Name, R2.Name 
From Reviewer R
Join Reviewer R2 on (R.rID = R2.rID)
Join Rating Rt on (Rt.rID = R2.rID)
Join Rating Rt2 on (Rt2.rID = R.rID)
Where Rt.MID = Rt2.mID and R.rID < r2.rID

我知道我需要一个包含 2 个评论者姓名列和 2 个电影列的表格。我应用的条件是电影必须彼此相等,并且 ID 不能与问题相同的条件“不要将评论者与他们自己配对,并且每对只包含一次” .

我的结果是空的(不正确)。我做错了什么?

最佳答案

您必须两次将表 rating 连接到表 movie 并且对于每次连接,都连接表 reviewer
然后过滤结果,使评论者不与自己配对,并使用 distinctmin()max() 函数确保每个对不重复:

select distinct
min(v1.name, v2.name) reviewer1,
max(v1.name, v2.name) reviewer2
from movie m
inner join rating r1 on r1.mid = m.mid
inner join rating r2 on r2.mid = m.mid
inner join reviewer v1 on v1.rid = r1.rid
inner join reviewer v2 on v2.rid = r2.rid
where v1.rid <> v2.rid
order by reviewer1, reviewer2

关于sql - 对于所有评论者对,使得两位评论者都对同一部电影进行了评级,返回两位评论者的姓名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55174114/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com