-
leetcode - 178. Rank ScoresSQL 문제풀이 2022. 6. 20. 15:04
난이도 : Medium

고민 과정
추출할 데이터 = 점수와 순위
1. 점수를 order by를 활용하여 내림차순 하기
2. 순위를 Dense Rank로 매겨주기
방법 1
SELECT score , DENSE_RANK() OVER (ORDER BY score DESC) rank FROM ScoresRuntime Error
윈도우 함수 쿼리가 잘못 되었나?
혹시나 하는 생각에 Mysql에서 Mysql Server로 바꿔 제출해 보았다.
그 결과
Accepted
그렇다면 윈도우 함수를 활용하지 않고 다른 방식으로 풀어볼 수 있을까?
방법 2
SELECT score , (SELECT COUNT(DISTINCT score) -- 총 4개 FROM Scores WHERE score >= s1.score) Rank FROM Scores s1 ORDER BY score DESCAccepted
select 서브쿼리를 활용해 Dense Rank를 구할 수 있다.
count(distinct score) = 총 4개
따라서 where절을 활용해 서브쿼리 점수가 본 쿼리 점수보다 크거나 같다는 조건절을 만들어 준다면,
본 쿼리 점수 보다 크거나 같은 점수를 제외한 갯수를 셀 수 있다.
'SQL 문제풀이' 카테고리의 다른 글
leetcode - 175. Combine Two Tables (0) 2022.06.21 leetcode - 1069. Product Sales Analysis II (0) 2022.06.20 leetcode - 1068. Product Sales Analysis I (0) 2022.06.20 leetcode - 1050. Actors and Directors Who Cooperated At Least Three Times (0) 2022.06.20 (Again) leetcode - 176. Second Highest Salary (0) 2022.06.19