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

키키·2023년 1월 9일
0

SQL

목록 보기
2/2

solvesql 문제 바로가기

(요약) 2000년 이후 메달을 획득한 선수 중 2개 이상의 국적으로 수상한 이름을 조회하는 쿼리를 작성해주세요.


풀이 순서

1) 변수 확인 : 문제를 풀기 위해 필요한 변수 확인

  • 2000년 이후 → games / year
  • 메달을 획득한 → records / medal
  • 2개 이상 국적 → records / team_id
  • 선수 이름 → athletes / name

2) join : records, game, athletes 테이블 join하기
3) where절 : games.year가 2000년 이후인 경우, records.medal이 NULL이 아닌 경우만 가져오기
4) group by : 운동 선수 id를 기준으로 group by하여 고유한 team_id가 2개 이상인 경우 가져오기
5) 정렬 : 문제 조건에 따라 athletes name 오름차순 정렬


코드

SELECT a.name 
FROM records AS r
       INNER JOIN games AS g ON r.game_id = g.id
       INNER JOIN athletes AS a ON r.athlete_id = a.id
WHERE g.year >= 2000
AND medal IS NOT NULL
GROUP BY athlete_id
HAVING COUNT(DISTINCT team_id) > 1
ORDER BY a.name ASC
profile
아무튼 데이터 분석가

0개의 댓글