SELECT 고객번호, ROW_NUMBER() OVER (PARTITION BY 고객번호
ORDER BY 매출액 RANGE BETWEEN 1000 PRECEDING AND 1000
FOLLOWING) AS_ 순위
FROM 월별매출
GROUP BY 고객번호;
=> 고객번호 별로 -1000 ~ +1000 사이에 존재하는 매출액으로 순위를 매긴다.
[월별매출]
월(PK) | 고객번호(PK) | 고객명 | 매출액 |
---|---|---|---|
202201 | 001 | 송부장 | 1 |
202201 | 002 | 박부장 | 1 |
202201 | 003 | 용부장 | 1 |
202201 | 004 | 김부장 | 1 |
202202 | 005 | 최팀장 | 1 |
202202 | 006 | 곽인턴 | 1 |
SELECT 월, 고객번호,
SUM(매출액) OVER (PARTITION BY 월 ORDER BY 월
RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
AS RANGE,
SUM (매출액) OVER(PARTITION BY 월 ORDER BY 월
ROWS UNBOUNDED PRECEDING AND CURRENT ROW) AS ROWS
FROM 월별매출;
[SQL 결과]
월(PK) | 고객번호(PK) | RANGE | ROWS |
---|---|---|---|
202201 | 001 | 4 | 1 |
202201 | 002 | 4 | 2 |
202201 | 003 | 4 | 3 |
202201 | 004 | 4 | 4 |
202202 | 005 | 2 | 1 |
202202 | 006 | 2 | 2 |