SELECT T.HACKER_ID
, T.NAME
FROM (SELECT A.HACKER_ID
, D.NAME
, (CASE WHEN A.SCORE = C.SCORE THEN 'PASS' ELSE 'FAIL' END) AS RESULT
FROM SUBMISSIONS A, CHALLENGES B, DIFFICULTY C, HACKERS D
WHERE A.CHALLENGE_ID = B.CHALLENGE_ID
AND A.HACKER_ID = D.HACKER_ID
AND B.DIFFICULTY_LEVEL = C.DIFFICULTY_LEVEL
ORDER BY A.HACKER_ID) T
WHERE T.RESULT = 'PASS'
GROUP BY T.HACKER_ID, T.NAME
HAVING COUNT(T.RESULT) > 1
ORDER BY COUNT(T.RESULT) DESC, T.HACKER_ID
RESULT 값의 집계함수를 조건으로 사용할 것이므로
WHERE절이 아닌 HAVING절에 쓴다.
HAVING절은 GROUP BY와 ORDER BY 사이에 위치한다.
해커랭크 Top Competitors SQL
'SQL > 해커랭크' 카테고리의 다른 글
[SQL] 해커랭크 15 Days of Learning SQL (0) | 2022.12.03 |
---|---|
[SQL] 해커랭크 SQL Project Planning (0) | 2022.12.03 |
[SQL] 해커랭크 The Report (0) | 2022.12.03 |
[SQL] 해커랭크 Occupations (0) | 2022.12.03 |
[SQL] 해커랭크 The PADS (0) | 2022.12.02 |