1. NTILE 함수
NTILE 함수는 SQL에서 사용되는 윈도우 함수 중 하나로, 정렬된 파티션(컬럼)의 행을 지정된 수의 그룹(n)으로 분할하여 각 행이 속한 그룹 번호를 반환합니다. 그룹은 1부터 시작하는 번호가 매겨집니다.
전체 행 데이터 수 (N)을 그룹(n)으로 나누었을 때 나머지가 존재하면 첫 번째 그룹부터 나머지가 없을 때까지 1씩 부여합니다.
ex) N=20, n=3이면 3번 그룹까지 각 6개의 행을 부여하고 1번, 2번 그룹에 1행씩 추가 부여됩니다.
사용법
NTILE(n) OVER (ORDER BY column_name)
여기서 n은 나눌 그룹의 개수를 의미하며, ORDER BY 절을 통해 정렬된 데이터를 기준으로 그룹을 나눕니다.
2. PARTITION BY
사용법
NTILE(n) OVER (PARTITION BY col1 ORDER BY col2)
PARTITION BY를 생략하면 전체 행(N)을 대해서 그룹화가 수행되고, PARTITION BY 절을 사용하면 특정 열을 기준으로 데이터를 그룹화한 후에 등급이 매겨집니다.
3. 예제
예제1 - emp_table에서 급여(sal)를 기준으로 등급을 매기기
SELECT empNo,
eName,
sal,
NTILE(4) OVER(ORDER BY sal DESC) AS grade
FROM emp_table;
예제2 - 직무(job) 별 급여(sal)를 기준으로 4개의 등급매기기
SELECT empNo,
eName,
job,
sal,
NTILE(4) OVER(PARTITION BY job ORDER BY sal DESC) AS grade
FROM emp_table;
이렇게 함으로써 각 직무별로 급여를 기준으로 등급을 매길 수 있습니다.
>> [Skills/SQL] - [프로그래머스] SQL - '대장균의 크기에 따라 분류하기 2' 문제풀이 <<
위 포스팅을 참고하면 NTILE 함수를 사용한 예시를 확인할 수 있습니다.
이를 통해 NTILE 함수가 어떻게 활용되는지 실제 문제를 통해 살펴볼 수 있습니다 :)
더 좋은 예제에요!!
'Skills > SQL' 카테고리의 다른 글
[프로그래머스] SQL - 'FrontEnd 개발자 찾기' 문제풀이 (0) | 2024.04.30 |
---|---|
[프로그래머스] SQL - '특정 세대의 대장균 찾기' 문제풀이 (0) | 2024.04.29 |
[SQL] 순위 함수 : RANK, DENSE_RANK, ROW_NUMBER (0) | 2024.04.24 |
[프로그래머스] SQL - '연간 평가점수에 해당하는 평가 등급 및 성과금 조회하기' 문제풀이 (0) | 2024.04.23 |
[프로그래머스] SQL - '대장균의 크기에 따라 분류하기 2' 문제풀이 (0) | 2024.04.22 |