3개 이상의 테이블을 조인해보는 것은 처음이라 어떻게 해야할 지 잘 몰랐는데 그냥 join해보니까 어찌저찌 되긴 했다.
테이블마다 공통적으로 가지고 있는 키를 참고하여 join 조건을 걸어주고, 한 문제(challenge)에서 만점을 받은 해커는
위의 두 사항을 만족시켜야 하므로 where 절을 사용하여 해결하였다.
또한, hacker_id, name별로 count를 해야하기 때문에 group by 구문을 사용하였다.
select t4.hacker_id, t4.name
from submissions as t1
join challenges as t2 on t1.challenge_id = t2.challenge_id
join difficulty as t3 on t2.difficulty_level = t3.difficulty_level
join hackers as t4 on t1.hacker_id = t4.hacker_id
where t2.difficulty_level = t3.difficulty_level and t1.score = t3.score
group by t4.hacker_id, t4.name
having count(t4.hacker_id)>1
order by count(t4.hacker_id) desc, t4.hacker_id