SQL 쿼리는 각 부서별로 급여 순위를 매기는 쿼리입니다. 각 부서 내에서 급여가 높은 직원 순으로 순위를 계산하고, 급여가 NULL인 직원은 마지막에 배치되도록 처리합니다.

 

SQL 부서의 급여 순위 NULL LAST : 

SELECT 
    department,
    employee_name,
    salary,
    ROW_NUMBER() OVER (PARTITION BY department ORDER BY salary DESC NULLS LAST) AS rank --설명 ●
FROM 
    employees;

 

  • ROW_NUMBER(): 각 행에 고유한 순차적인 번호를 부여합니다. 동점이 있더라도 건너뛰지 않고 순차적으로 번호를 매깁니다.
  • OVER: 이 함수가 윈도우 함수임을 나타내며, PARTITION BY와 ORDER BY 절을 통해 계산 방식을 지정합니다.
  • PARTITION BY department: department별로 데이터를 그룹화합니다. 즉, 각 부서별로 ROW_NUMBER()가 별도로 계산됩니다.
  • ORDER BY salary DESC: salary를 기준으로 내림차순 정렬합니다. 즉, 급여가 높은 순서대로 번호를 매깁니다.
  • NULLS LAST: NULL 값이 있는 경우, 정렬 시 NULL을 마지막에 배치하도록 합니다. 이는 salary가 NULL인 경우 해당 행이 가장 낮은 순위(가장 나중에)로 처리되도록 합니다.

예시 데이터 

HR John 4000
HR Alice 3500
HR Bob NULL
IT Charlie 5000
IT Eve 4500
IT David 6000

실행 결과

HR John 4000 1
HR Alice 3500 2
HR Bob NULL 3
IT David 6000 1
IT Charlie 5000 2
IT Eve 4500 3

 

 

 

+ Recent posts