ROW\_NUMBER
ROW_NUMBER (행 번호)
ROW_NUMBER 윈도우 함수는 파티션 안의 현재 행의 순번을 1부터 시작해 반환해요.
ROW_NUMBER()는 각 파티션 안에서 행을 정렬한 뒤 순위를 매기는 데 흔히 사용돼요. 결정적인 결과를 얻으려면 윈도우 정의에 ORDER BY 절을 지정하세요.
출처: 문서
본문
ROW_NUMBER()
사용 참고 사항
ROW_NUMBER()는 인자를 받지 않습니다.- 번호는 각
PARTITION BY그룹마다 다시 시작됩니다. - 행 순서는 윈도우의
ORDER BY절에 의해 결정됩니다. ROW_NUMBER()에는 명시적 윈도우 프레임 절을 지정할 수 없습니다.
예시
각 영업사원에게 연간 누계 매출로 행 번호를 부여합니다.
SELECT
ROW_NUMBER() OVER (ORDER BY SalesYTD DESC) AS Row,
FirstName,
LastName,
SalesYTD AS "Total sales YTD"
FROM Sales.vSalesPerson;
출력:
| Row | FirstName | LastName | Total sales YTD |
|---|---|---|---|
| 1 | Joe | Smith | 2251368.34 |
| 2 | Alice | Davis | 2151341.64 |
| 3 | James | Jones | 1551363.54 |
| 4 | Dane | Scott | 1251358.72 |
각 고객 파티션 안에 결제 시간 순으로 행 번호를 부여합니다.
SELECT
customer_id,
payment_date,
amount,
ROW_NUMBER() OVER (
PARTITION BY customer_id
ORDER BY payment_date
) AS payment_number
FROM payment;
출력:
| customer_id | payment_date | amount | payment_number |
|---|---|---|---|
| 1 | 2023-02-14 23:22:38.996577 | 5.99 | 1 |
| 1 | 2023-02-15 16:31:19.996577 | 0.99 | 2 |
| 1 | 2023-02-15 19:37:12.996577 | 9.99 | 3 |
| 2 | 2023-02-17 19:23:24.996577 | 2.99 | 1 |
| 2 | 2023-02-17 19:24:10.996577 | 0.99 | 2 |