본문 바로가기

SQL/[HackerRank]

[HackerRank/MySQL] Interviews

728x90

< Problem >

contest_idhacker_idname, total_submissions의 합total_accepted_submissions의 합, total_views의 합total_unique_views의 합 구하기 (contest_id를 기준으로 오름차순 정렬)

링크:  https://www.hackerrank.com/challenges/interviews/problem

 

Interviews | HackerRank

find total number of view, total number of unique views, total number of submissions and total number of accepted submissions.

www.hackerrank.com


< Code >

SELECT Contests.contest_id, hacker_id, name, SUM(total_submissions), SUM(total_accepted_submissions), SUM(total_views), SUM(total_unique_views)
FROM Contests 
JOIN Colleges ON Contests.contest_id = Colleges.contest_id 
JOIN Challenges ON Colleges.college_id = Challenges.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 challenge_id) AS v_stats ON Challenges.challenge_id = v_stats.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 challenge_id) AS s_stats ON Challenges.challenge_id = s_stats.challenge_id
GROUP BY Contests.contest_id, hacker_id, name HAVING SUM(total_submissions) + SUM(total_views) > 0
ORDER BY contest_id

 

< Lesson & Learned >

SELECT: 키워드와 함께 검색하고 싶은 속성의 이름을 나열
SUM( ): 속성 값의 합계를 검색하기 위한 집계함수

FROM: 키워드와 함께 검색하고 싶은 속성이 있는 데이블의 이름을 나열

JOIN ON: 추가예정
LEFT JOIN ON: 추가예정
GROUP BY: 특정 속성의 값이 같은 투플을 모아 그룹을 만들고, 그룹별로 검색. HAVING 키워드를 이용해 그룹에 대한 조건을 작성함.
ORDER BY: 결과 테이블 내용을 원하는 순서로 출력. 오름차순(기본): ASC, 내림차순: DESC

728x90