본문 바로가기
코딩테스트/SQL

[solvesql][SQLite] 복수 국적 메달 수상한 선수 찾기

by 포뇨j 2023. 12. 7.

https://solvesql.com/problems/multiple-medalist/

 

https://solvesql.com/problems/multiple-medalist/

 

solvesql.com

 

select name
from athletes a
left join records r on a.id = r.athlete_id
left join games g on r.game_id = g.id
left join teams t on r.team_id = t.id
where g.year >= '2000' and r.medal is not null
group by a.id
having count(distinct team) >= 2
order by name asc

 

필요한 데이터들이 4개의 테이블에 흩어져있어서 join을 세번 거쳤다.

의외로 join은 금방 했으나 group by 절 때문에 시간이 꽤 걸렸다.

처음엔 group by a.name으로 처리했는데 레코드 개수가 안맞다는 결과를 받았다.

쿼리를 검토하던 중 a.id로 수정했더니 통과됐다.

PK를 먼저 쓰자.