数据库的架构:
参与者的Shahrukh数是参与者与Shahrukh Khan之间的最短路径的长度(在“共同作用”图中)。也就是说,Shahrukh Khan拥有Shahrukh编号0;所有在同一部电影中扮演沙鲁克的演员都拥有沙鲁克1号;与Shahrukh编号为1的演员在同一部电影中演出的所有演员都有Shahrukh编号2,以此类推。返回Shahrukh编号为2的所有演员
我已经写了一个SQL查询,但仍然无法得到正确的答案,因为sharukh khan 2演员的总数应该是25698,但我得到了28080。我犯了什么错误?数据库位于google drive中
以下是查询:
%%time
def grader_9(q9):
q9_results = pd.read_sql_query(q9,conn)
print(q9_results.head(10))
print(q9_results.shape)
assert (q9_results.shape == (25698, 1))
query9 = """WITH
SHAHRUKH_0 AS
(
SELECT
P.PID PID
FROM
Person P
WHERE
Trim(P.Name) like '%Shah Rukh%'
),
SHAHRUKH_1_MOVIES AS
(
SELECT
DISTINCT
MC.MID MID,
S0.PID
FROM
M_Cast MC,
SHAHRUKH_0 S0
WHERE
TRIM(MC.PID,' ') = TRIM(S0.PID,' ')
),
SHAHRUKH_1_ACTORS AS
(
SELECT
DISTINCT
MC.PID PID
FROM
M_Cast MC,
SHAHRUKH_1_MOVIES S1M
WHERE
MC.MID = S1M.MID AND
TRIM(MC.PID,' ') <> TRIM(S1M.PID,' ')
),
SHAHRUKH_2_MOVIES AS
(
SELECT
DISTINCT
MC.MID MID,
S1A.PID PID
FROM
M_Cast MC,
SHAHRUKH_1_ACTORS S1A
WHERE
TRIM(MC.PID,' ') = TRIM(S1A.PID,' ')
),
SHAHRUKH_2_ACTORS AS
(
SELECT
DISTINCT
MC.PID PID
FROM
M_Cast MC,
SHAHRUKH_2_MOVIES S2M,
SHAHRUKH_1_MOVIES S1M,
SHAHRUKH_1_ACTORS S1A,
SHAHRUKH_0 S0
WHERE
MC.MID = S2M.MID AND
TRIM(MC.PID,' ') <> TRIM(S2M.PID,' ') AND
TRIM(MC.PID,' ') <> TRIM(S1M.PID,' ') AND
TRIM(MC.PID,' ') <> TRIM(S1A.PID,' ') AND
TRIM(MC.PID,' ') <> TRIM(S0.PID,' ')
)SELECT
P.Name
FROM
Person P,
SHAHRUKH_2_ACTORS S2A
WHERE
TRIM(S2A.PID,' ')=TRIM(P.PID,' ')"""
grader_9(query9)
目前没有回答
相关问题 更多 >
编程相关推荐