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 |
[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 |
댓글 영역