tak's data blog

[SQL] HackerRank - Challenges 본문

SQL

[SQL] HackerRank - Challenges

hyuntaek 2022. 3. 17. 21:08

출처: https://www.hackerrank.com/challenges/challenges/problem?isFullScreen=truen 

 

Challenges | HackerRank

Print the total number of challenges created by hackers.

www.hackerrank.com

 

가장 최근 프로그래머스로 코딩테스트를 보았을 때, 비슷한 문제유형이 나왔습니다. 해커랭크를 공부한 보람이 있었네요

with문을 이용해 숫자를 count하는 테이블을 생성하고 이를 활용하는 문제풀이형식을 사용하였습니다. 

 

 

문제:

 

Julia가 학생들에게 코딩 문제를 만들라고 지시하였습니다. hacker_id, name, 학생이 만든 총 문제 횟수를 출력. 내림차순으로 총 문제 횟수별 결과를 정렬합니다. 둘 이상의 학생이 동일한 수의 문제를 만든 경우 hacker_id를 기준으로 결과를 정렬합니다. 두 명 이상의 학생이 동일한 수의 과제를 만들고, 그 횟수가 생성된 최대 과제 수보다 적으면, 해당 학생을 결과에서 제외하고 출력합니다.

 

# with문을 통해 문제를 만든 횟수 테이블을 따로 생성합니다.
with counter as (
    select h.hacker_id as id, h.name as name, count(h.hacker_id) as cnt
    from challenges as c
    inner join hackers as h on c.hacker_id = h.hacker_id
    group by h.hacker_id, h.name)


# with문을 통해 만들어진 counter테이블을 기준으로 조건에 맞춰 작성합니다.
select id, name, cnt
from counter
where cnt = (select max(cnt) from counter)
or cnt in (select cnt from counter group by cnt having count(cnt) = 1)
order by cnt desc, id

 

'SQL' 카테고리의 다른 글

[SQL] HackerRank - Ollivander's Inventory  (0) 2022.06.05
[SQL] HackerRank - New Companies  (0) 2022.04.03
[SQL] HackerRank - Contest Leaderboard  (1) 2022.02.12
[SQL] HackerRank - The Report  (1) 2022.02.11
Python SQL 연동  (0) 2021.04.12