[코딩테스트]/[SQL]

[StrataScratch - SQL] (Medium) Ranking Most Active Guests

잰잰' 2025. 5. 14. 16:20

문제

전체 메시지 활동량을 기준으로 게스트를 순위별로 나열하여 가장 활발한 게스트를 식별하시오. 가장 활발한 게스트는 호스트와 가장 많은 메시지를 주고받은 사람이어야 하며, 가장 높은 순위를 가져야 한다. 두 명 이상의 게스트가 동일한 메시지 수를 가지고 있다면 동일한 순위를 가져야 한다. 중요한 점은, 여러 게스트가 같은 순위를 가지더라도 순위 번호는 건너뛰지 않아야 한다. 결과는 순위, 게스트 식별자, 각 게스트의 총 메시지 수를 명확하게 보여주는 형식으로, 가장 활발한 게스트부터 덜 활발한 게스트 순으로 정렬하여 제시하시오.

 

테이블설명

 

예상결과

 

✏️ 풀이

WITH sum_m AS (
    SELECT id_guest, SUM(n_messages) AS sum_n_message
    FROM airbnb_contacts
    GROUP BY 1
)

SELECT id_guest, 
    dense_rank() OVER(ORDER BY sum_n_message DESC) AS ranking,
    sum_n_message
FROM sum_m
ORDER BY 3 DESC;

 

 

1. 게스트별 메시지 활동량 구하기

2. 1번 테이블을 기준으로 dense_rank()를 사용해서 순위 구하기