RANK 1, 2, 2, 4, 5, 5, 7, …
DENSE_RANK 1, 2, 2, 3, 4, 4, 5, …
ROW_NUMBER 1, 2, 3, 4, 5, 6, 7, …

RANK


EX) 날짜별로 주문 건수를 카운트하여 순위 매기기

SELECT ORDER_DT,
			 COUNT(*),
			 RANK() OVER(ORDER BY COUNT(*) DESC) AS RANK
	FROM STARBUCKS_ORDER
GROUP BY ORDER_DT;

Untitled

DENSE_RANK


EX) 부서별로 급여가 높은 사원부터 순위 매기기

SELECT FIRST_NAME,
			 LAST_NAME,
			 DEPARTMENT_ID,
			 SALARY,
			 DENSE_RANK() OVER(PARTITION BY DEPARTMENT_ID ORDER BY SALARY DESC) AS DENSE_RANK
FROM EMPLOYEES;

PARTITION BY DEPARTMENT_ID

: 데이터를 부서별로 파티션화. 이렇게 하면 부서 내에서만 순위가 부여된다.

Untitled