从以下查询的答案中删除重复的行

问题描述 投票:0回答:2

**列出所有导演5000部或以上电影的导演,按他们导演的电影数量的降序排列

在d.name之前使用Distinct没有帮助。

result = pd.read_sql_query("SELECT d.name,count(*) as num 

FROM PERSON d, M_DIRECTOR md 

WHERE d.Pid = md.Pid 

GROUP BY d.Pid,d.name 

HAVING COUNT(*) >= 10

order by count(*) desc

",conn)
sql sqlite
2个回答
1
投票

您必须在表之间使用正确的显式连接并依赖于不同的电影:

select 
  p.name,
  count(distinct d.mid) num
from person p
inner join m_director d on d.pid = p.pid
inner join movie m on m.mid = d.mid 
group by p.pid, p.name
having num >= 10
order by num desc

0
投票

可能你在Person表中有重复记录 - 具有相同名称但不同ID的人。尝试按名称分组,而不是按ID分组

    result = pd.read_sql_query("SELECT d.name,count(*) as num 

FROM PERSON d, M_DIRECTOR md 

WHERE d.Pid = md.Pid 

GROUP BY d.name 

HAVING COUNT(*) >= 10

order by count(*) desc

",conn)
© www.soinside.com 2019 - 2024. All rights reserved.