https://www.hackerrank.com/challenges/full-score/problem?isFullScreen=true
중요 포인트.
1. 해커대회에 한번 이상 참여한
2. 해커 중 만점자의 해커아이디와 이름을
3. 참가수가 많은 순으로 정렬
SELECT
sv.hacker_id,
sv.name
FROM
(SELECT
sub.hacker_id,
h.name,
COUNT(*) AS cnt
FROM
Hackers h
INNER JOIN Submissions sub
ON h.hacker_id=sub.hacker_id
INNER JOIN Challenges c
ON sub.challenge_id=c.challenge_id
INNER JOIN Difficulty d
ON c.difficulty_level =d.difficulty_level
WHERE 1=1
AND d.score=sub.score
GROUP BY
sub.hacker_id,
h.name
HAVING 1=1
AND cnt>1)sv
ORDER BY
cnt DESC,
hacker_id
SELECT
sub.hacker_id,
h.name,
COUNT(*) AS cnt
FROM
Hackers h
INNER JOIN Submissions sub
ON h.hacker_id=sub.hacker_id
INNER JOIN Challenges c
ON sub.challenge_id=c.challenge_id
INNER JOIN Difficulty d
ON c.difficulty_level =d.difficulty_level
GROUP BY
sub.hacker_id,
h.name
WHERE 1=1
AND d.score=sub.score
HAVING 1=1
AND cnt>1
4.이후 서브쿼리로 넣고 필요한 컬럼만 추출 및 정렬
SELECT
sv.hacker_id,
sv.name
FROM
(SELECT
sub.hacker_id,
h.name,
COUNT(*) AS cnt
FROM
Hackers h
INNER JOIN Submissions sub
ON h.hacker_id=sub.hacker_id
INNER JOIN Challenges c
ON sub.challenge_id=c.challenge_id
INNER JOIN Difficulty d
ON c.difficulty_level =d.difficulty_level
WHERE 1=1
AND d.score=sub.score
GROUP BY
sub.hacker_id,
h.name
HAVING 1=1
AND cnt>1)sv
ORDER BY
cnt DESC,
hacker_id
후.. 이번건 좀 공간지각능력이 필요했다...껄껄껄