oracle

ORACLE 정렬함수의 종류와 활용 예시

구름Grum 2023. 1. 26. 13:15

오라클 정렬 함수는 데이터를 정렬할 때 사용합니다. 아래는 몇 가지 예시를 들어 설명해 드리겠습니다.

RANK
데이터를 정렬하여 각 행에 대한 순위를 구합니다. 결과 집합의 행에 대한 고유 순위를 계산합니다. 순위는 동률이 있을 경우 같은 순위를 가집니다. 예를 들어, RANK(3,1,4,1,5) 결과는 3,1,2,1,4가 됩니다.

SELECT 
  employee_name, 
  salary, 
  RANK() OVER (ORDER BY salary DESC) as rank
FROM employees;


이 쿼리는 employees 테이블에서 사원 이름, 급여, 급여를 기준으로 한 순위를 조회합니다. 순위는 급여가 높은 순으로 부여됩니다.

DENSE_RANK
RANK 함수와 비슷하지만, 같은 순위를 가진 행에 대해 같은 순위를 부여합니다. 결과 집합의 행에 대한 고유 순위를 계산합니다. 순위는 동률이 있을 경우 연속된 순위를 가집니다. 예를 들어, DENSE_RANK(3,1,4,1,5) 결과는 3,1,2,2,4가 됩니다.

SELECT 
  employee_name, 
  salary, 
  DENSE_RANK() OVER (ORDER BY salary DESC) as rank
FROM employees;


이 쿼리는 employees 테이블에서 사원 이름, 급여, 급여를 기준으로 한 순위를 조회합니다. 순위는 급여가 높은 순으로 부여되며, 급여가 같은 행들에 대해 동일한 순위를 부여합니다.

ROW_NUMBER
정렬된 행에 대해 각 행에 대한 순서를 구합니다. 결과 집합의 행에 대한 고유 번호를 계산합니다. 예를 들어, ROW_NUMBER(3,1,4,1,5) 결과는 3,1,4,2,5가 됩니다.

SELECT 
  employee_name, 
  salary, 
  ROW_NUMBER() OVER (ORDER BY salary DESC) as row_number
FROM employees;


이 쿼리는 employees 테이블에서 사원 이름, 급여, 급여를 기준으로 한 순번을 조회합니다. 순번은 급여가 높은 순으로 부여됩니다.

ROW_NUMBER() 함수는 결과 집합을 정렬하지 않아도 되며, 순번을 부여할 경우에 사용하면 좋습니다.