→ 2개 이상의 도전에서 만점 받은 해커들의 hacker_id 와 이름 출력
→ 출력한 결과를 만점받은 도전의 개수로 내림차순으로 정렬
→ 만점받은 도전의 개수가 동일할 경우 hacker_id 로 오름차순으로 정렬
→ COUNT(Distinct 해커 이름) 을 통해 갯수를 카운트하고 갯수가 2 이상인 것만 출력 하기
일단 서브미션 테이블이 fk 모임이므로 서브미션으로 조회하고 join 으로 붙여주는 식으로 진행
서브미션 테이블에 해커, 챌린지, 디피컬티를 싹다 조인하고
“서브미션 스코어 = 디피컬티 스코어” ⇒ 만점
SELECT Ha.hacker_id, Ha.name
FROM Submissions Sub
JOIN Hackers Ha ON Sub.hacker_id = Ha.hacker_id
JOIN Challenges Ch ON Sub.challenge_id = Ch.challenge_id
JOIN Difficulty Di ON Ch.difficulty_level = Di.difficulty_level
WHERE Sub.score = Di.score
GROUP BY Ha.hacker_id, Ha.name
HAVING COUNT(Ha.name) > 1
ORDER BY COUNT(Ha.name) DESC, Ha.hacker_id ASC
Ha.hacker_id, Ha.name 를 기준으로 데이터를 집계하고 출력해야하므로,
GROUP BY 를 Ha.hacker_id, Ha.name 로 해주었다.