[Hackerrank] SQL - Interviews

DMIS·2022년 10월 29일
0

SQL

목록 보기
41/48
post-thumbnail

문제

풀이

요즘 자격증 준비한다고 SQL 문제를 따로 풀지 않은 것 같아서 오랜만에 들렀다.
예전에는 어려워보였는데, 회사에서 쿼리를 많이 날리다보니 감이 온 건지 길어보이기만 하고 실제로는 어렵지 않은 문제인 것 같다.
view_stats와 submissions_stats에 PK가 없어 challenge_id별로 그룹화 시켜주고, 그다음에 left join을 통해 contest별 구하는 값들을 계산해주면 된다.

select
    t1.contest_id,
    t1.hacker_id,
    t1.name,
    sum(t5.total_submissions),
    sum(t5.total_accepted_submissions),
    sum(t4.total_views),
    sum(t4.total_unique_views)
from contests t1
left join colleges t2
on t1.contest_id = t2.contest_id
left join challenges t3
on t2.college_id = t3.college_id
left join (select
                challenge_id,
                sum(total_views) as total_views,
                sum(total_unique_views) as total_unique_views
          from view_stats
          group by 1) t4
on t3.challenge_id = t4.challenge_id
left join (select
                challenge_id,
                sum(total_submissions) as total_submissions,
                sum(total_accepted_submissions) as total_accepted_submissions
          from submission_stats
          group by 1) t5
on t3.challenge_id = t5.challenge_id
group by 1, 2, 3
having sum(t5.total_submissions)
    +sum(t5.total_accepted_submissions)
    +sum(t4.total_views)
    +sum(t4.total_unique_views)>0
order by 1
profile
Data + Math

0개의 댓글