해커랭크: Top Competitors (MySQL)

SIMPLY_DAILY·2024년 11월 12일

주어진 테이블 수가 많았기 때문에, 문제를 이해하고 조인, 조건을 작성하는 과정에서 어려움을 겪은 문제입니다.

해커랭크 | Top Competitors
두 개 이상의 챌린지에서 만점을 받은 해커의 해당 hacker_id와 이름 출력하기
[정렬 조건]
1. 해커가 만점을 받은 총 챌린지 수를 기준으로 내림차순 정렬
2. 동일한 수의 챌린지에서 전체 점수를 받은 해커들의 경우, hacker_id를 기준으로 오름차순 정렬

[테이블]

  1. Hackers
    2. Difficulty3. Challenges4. Submissions

⚠️주의사항
Difficulty 테이블의 score은 만점, Submissions 테이블의 score은 해커의 점수를 의미합니다. (동일한 값 X)

제가 작성한 쿼리는 다음과 같습니다.

[풀이 방법]

  1. JOIN 조건 | 테이블 간 연결을 위한 조인
  2. WHERE 조건 | 만점을 받은 해커 필터링
  3. GROUP BY, HAVING | 해커아이디와 이름으로 그룹화 후, 그 중 카운트가 두 개 이상인 것만 추출
  4. 정렬 조건에 따라, 카운트 수가 높은 해커 순으로 내림차순 정렬, 동일한 값은 hacker_id 기준으로 오름차순 정렬

0개의 댓글