SQL의 RANK 함수는 데이터 집합에서 순위를 매기는 기능을 수행합니다. 이 함수는 ORDER BY 구문과 함께 사용되며, 정렬된 데이터 집합에서 각 행의 순위를 지정해줍니다.
예를 들어, 다음과 같은 Sales 테이블이 있다고 가정해보겠습니다.
salesperson | region | sales |
john | east | 500 |
jane | west | 1000 |
bob | east | 750 |
sally | south | 250 |
tim | west | 1250 |
이 테이블에서 salesperson과 region으로 group by 구문을 사용하고, sales로 order by 구문을 사용하여 각 salesperson의 판매액 순위를 구하려면 다음과 같이 rank 함수를 사용할 수 있습니다.
SELECT Salesperson, Region, Sales, RANK() OVER (ORDER BY Sales DESC) AS Sales_Rank
FROM Sales
GROUP BY Salesperson, Region
ORDER BY Sales DESC
위 sql 문장은 salesperson, region으로 그훔화하고, sales를 기준으로 내림차순으로 정렬한 뒤, rank 함수를 사용하여 판매액에 대한 순위를 계산합니다. 이렇게하면 sales_rank 열에 salesperson의 판매액 순위가 나타납니다.
결과는 다음과 같습니다.
salesperson | region | sales | sales_rank |
tim | west | 1250 | 1 |
jane | west | 1000 | 2 |
bob | east | 750 | 3 |
john | east | 500 | 4 |
sally | south | 250 | 5 |
rank 함수를 중복된 값이 있을 경우 순위를 부여합니다. 예를 들어, 만약 salesperson 열이 아닌 sales 열만으로 판매액 순위를 계산하려면 다음과 같이 rank함수를 사용할 수 있습니다.
SELECT Salesperson, Region, Sales, RANK() OVER (ORDER BY Sales DESC) AS Sales_Rank
FROM Sales
ORDER BY Sales DESC
위 sql 문장은 sales를 기준으로 내림차순으로 정렬한 뒤, rank 함수를 사용하여 판매액에 대한 순위를 계싼합니다. 이렇게 하면 sales_rank 열에 전체 sales 테이블에서의 판매액 순위가 나타납니다.
[SQLD] to_char 함수 (0) | 2023.04.30 |
---|---|
[SQLD] dense rank (0) | 2023.04.29 |
[SQLD] 슈퍼/서브 타입 데이터 모델의 변환 기술 (0) | 2023.03.08 |
[SQLD] 엔터티 (0) | 2023.03.07 |
[SQLD] 문자유형비교방법 (0) | 2023.02.25 |
댓글 영역