홍동이의 성장일기

[LeetCode] 178. Rank Scores 본문

Tool/SQL 코딩테스트 풀이

[LeetCode] 178. Rank Scores

홍동2 2023. 10. 14. 09:00

 

Rank Scores - LeetCode

Can you solve this real interview question? Rank Scores - Table: Scores +-------------+---------+ | Column Name | Type | +-------------+---------+ | id | int | | score | decimal | +-------------+---------+ id is the primary key (column with unique values)

leetcode.com

 

SELECT score
  , DENSE_RANK() OVER(ORDER BY score DESC) as "rank"
FROM scores
ORDER BY score DESC

 

 

💡 문제 풀이

 

<윈도우 함수로 순위 구하는 방법>

 

MySQL :: MySQL 8.0 Reference Manual :: 12.20.1 Window Function Descriptions

12.20.1 Window Function Descriptions This section describes nonaggregate window functions that, for each row from a query, perform a calculation using rows related to that row. Most aggregate functions also can be used as window functions; see Section 12

dev.mysql.com

 

 

  • 점수는 가장 높은 점수에서 가장 낮은 점수로 매겨져야 한다.
    ➡️ 윈도우 함수 내림차순 (DESC)
  • 만약 두 점수 사이에 동점이 있다면, 둘 다 같은 순위가 되어야 한다.
    ➡️ RANK 🆚 DENSE_RANK
  • 동점 뒤에 다음 순위 번호는 그 다음 연속 정수 값이어야 한다. 다시 말해 순위 사이에 구멍이 없어야 한다.
    ➡️ DENSE_RANK

 

 

 

 

 

➕ 컬럼 이름을 그냥 rank로 설정하면 오류가 발생한다. (함수명이기 때문에) 따옴표를 붙히면 문제가 해결된다.

 

 


📍 본 내용은  '[백문이불여일타] 데이터 분석을 위한 고급 SQL 문제풀이'를  수강하며 작성한 내용입니다.

728x90
Comments