- ROW_NUMBER() : 동점인 경우도 서로 다른 등수로 계산
- DENSE_RANK(), RANK() : 동점인 경우 같은 등수로 계산
- DENSE_RANK() : 동점 등수 바로 다음 수로 순위 매김
- RANK() : 동점인 경우 데이터 세트를 고려해 다음 등수 매김
SELECT ROW_NUMBER() OVER(ORDER BY column) FROM...
SELECT RANK() OVER(ORDER BY column) FROM...
SELECT DENSE_RANK() OVER(ORDER BY column) FROM...
고객 번호, 구매 금액 테이블이 존재할 때 구매 금액으로 순위를 매기고 싶다면
SELECT *, ROW_NUMBER() OVER(ORDER BY 구매 금액) ROWNUMBER, RANK() OVER(ORDER BY 구매 금액) RANK, DENSE_RANK() OVER(ORDER BY 구매 금액) DENSE_RANK FROM TABLE;
만약 고객 번호 내에서 순위를 매기고 싶다면
SELECT ROW_NUMBER() OVER(PARTITION BY column) FROM... SELECT RANK() OVER(PARTITION BY column) FROM... SELECT DENSE_RANK() OVER(PARTITION BY column) FROM...
SELECT *,
ROW_NUMBER() OVER(PARTITION BY 고객 번호 ORDER BY 구매 금액) ROWNUMBER,
RANK() OVER(PARTITION BY 고객 번호 ORDER BY 구매 금액) RANK,
DENSE_RANK() OVER(PARTITION BY 고객 번호 ORDER BY 구매 금액) DENSE_RANK
FROM TABLE;
PRODUCTS
테이블에서BUYPRICE
컬럼으로 순위 매김
+)오름차순
,ROW_NUMBER
,RANK
,DENSE_RANK
사용SELECT ROW_NUMBER() OVER(ORDER BY BUYPRICE), RANK() OVER(ORDER BY BUYPRICE), DENSE_RANK() OVER(ORDER BY BUYPRICE) FROM PRODUCTS;
1-2
SELECT BUYPRICE, ROW_NUMBER() OVER(ORDER BY BUYPRICE), RANK() OVER(ORDER BY BUYPRICE), DENSE_RANK() OVER(ORDER BY BUYPRICE) FROM PRODUCTS;
PRODUCTS
테이블의 productline 별로 순위 매김
+) `BUYPRICE
컬럼 기준,오름차순
,ROW_NUMBER
,RANK
,DENSE_RANK
사용SELECT BUYPRICE, ROW_NUMBER() OVER(PARTITION BY PRODUCTLINE ORDER BY BUYPRICE) RN, RANK() OVER(PARTITION BY PRODUCTLINE ORDER BY BUYPRICE) RK, DENSE_RANK() OVER(PARTITION BY PRODUCTLINE ORDER BY BUYPRICE) DRK FROM PRODUCTS;