**列出所有导演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)
您必须在表之间使用正确的显式连接并依赖于不同的电影:
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
可能你在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)