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를 먼저 쓰자.
'코딩테스트 > SQL' 카테고리의 다른 글
| [LeetCode][MySQL] Triangle Judgement (0) | 2023.12.13 |
|---|---|
| [LeetCode][MySQL] Sales Person (0) | 2023.12.13 |
| [solvesql][SQLite] 할부는 몇 개월로 해드릴까요 (1) | 2023.12.07 |
| [solvesql][SQLite] 지역별 주문의 특징 (2) | 2023.12.06 |
| [solvesql][SQLite] 쇼핑몰의 일일 매출액과 ARPPU (1) | 2023.12.06 |