SELECT EMPLOYEE_ID AS 사원번호,
EMP_NAME AS 사원명,
HIRE_DATE AS 입사일자,
RANK() OVER(ORDER BY HIRE_DATE ASC) AS 순위
FROM HR.EMP
WHERE DEPARTMENT_ID = 80;
2) DENSE_RANK() OVER SELECT PROD_ID AS 상품코드,
PROD_NAME AS 상품명,
PROD_PRICE AS 판매가,
RANK() OVER(ORDER BY PROD_PRICE DESC)AS 순위1,
DENSE_RANK() OVER(ORDER BY PROD_PRICE DESC)AS 순위2
FROM PROD;
3) ROW_NUMBER() OVER -- 제일 많이 씀
. 중복값에 관계없이 SEQUENCE(순차적인 순위 값) 값을 반환
ex) 90,80,80,80,70 => 1,2,3,4,5,...
(사용예) 상품테이블에서 매출가격 순으로 등수를 DENSE_RANK()함수 형식으로 부여하시오
SELECT PROD_ID AS 상품코드,
PROD_NAME AS 상품명,
PROD_PRICE AS 판매가,
--RANK() OVER(ORDER BY PROD_PRICE DESC)AS 순위1,
--DENSE_RANK() OVER(ORDER BY PROD_PRICE DESC)AS 순위2,
ROW_NUMBER() OVER(ORDER BY PROD_PRICE DESC) AS 순위3
--ODER BY 절을 사용하지 않아도 정렬값으로 출력해줌
FROM PROD;
4)그룹내 순위
. 그룹별로 순위를 구하기 위해 사용되는 순위함수
(사용형식)
RANK() OVER(PARTITION BY 컬럼명1[,컬럼명2,...] ORDER BY 컬럼명11[,컬럼명12,..][ASC|DESC])
- '컬럼명1[,컬럼명2,..]' : 그룹화의 기준 컬럼명
- '컬럼명11[,컬럼명12,..]' : 정렬의 기준 컬럼명
(사용예) 상품테이블에서 분류별로 상품의 매출가격 순으로 등수를 부여하시오
SELECT PROD_ID AS 상품코드,
PROD_NAME AS 상품명,
PROD_LGU AS 분류코드,
PROD_PRICE AS 가격,
RANK() OVER(PARTITION BY PROD_LGU ORDER BY PROD_PRICE DESC) AS 순위
FROM PROD;