Удалить повторяющиеся строки из ответа ниже запроса - PullRequest
0 голосов
/ 11 апреля 2019

** Перечислите всех режиссеров, которые сняли 5000 или более фильмов, в порядке убывания количества фильмов, которые они сняли

Использование Distinct перед d.name не помогает.

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)

Ответы [ 2 ]

1 голос
/ 11 апреля 2019

Вы должны использовать правильные явные объединения между таблицами и рассчитывать на разные фильмы:

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 голосов
/ 11 апреля 2019

Возможно, у вас есть дубликаты записей в таблице Person - люди с одинаковыми именами, но разными идентификаторами. Попробуйте сгруппировать только по имени, а не по идентификатору

    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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...