상세 컨텐츠

본문 제목

[SQLD] dense rank

RDBMS

by Wanderer Kim 2023. 4. 29. 13:36

본문

728x90
반응형

SQL의 dense rank 함수는 rank 함수와 유사하지만, 중복된 값이 있을 경우 같은 순위를 부여하고 다음 순위는 중복 값의 갯수를 더해줍니다. 이를 통해 순위가 연속적이게 됩니다.

 

예를 들어, 다음과 같은 sales 테이블이 있다고 가정해보겠습니다.

salesperson region sales
john east 500
jane west 1000
bob east 750
sally south 250
tim west 1250
tom east 750

이 테이블에서 salesperson과 region으로 group by 구문을사용하고, sales로 order by 구문을 사용하여 각 salesperson의 판매액 순위를 구하려면 다음과 같이 dense_rank 함수를 사용할 수 있습니다.

SELECT Salesperson, Region, Sales, DENSE_RANK() OVER (ORDER BY Sales DESC) AS Sales_Rank
FROM Sales
GROUP BY Salesperson, Region
ORDER BY Sales DESC

위 sql 문장은 salesperson, region으로 그훔화하고, sales를 기준으로 내림차순으로 정렬한 뒤, dense_rank 함수를 사용하여 판매액에 대한 순위를 계싼합니다. 이렇게 하면 sales_rank 열에 salesperson의 판매액 순위가 나타납니다.

 

결과는 다음과 같습니다.

salesperson region sales sales_rank
tim west 1250 1
jane west 1000 2
bob east 750 3
tom east 750 3
john east 500 4
sally south 250 5

 

728x90

'RDBMS' 카테고리의 다른 글

[SQLD] COALESCE 함수  (0) 2023.05.08
[SQLD] to_char 함수  (0) 2023.04.30
[SQLD] RANK 함수  (0) 2023.04.28
[SQLD] 슈퍼/서브 타입 데이터 모델의 변환 기술  (0) 2023.03.08
[SQLD] 엔터티  (0) 2023.03.07

관련글 더보기

댓글 영역