MariaDB 순위 함수: RANK, NTILE, DENSE_RANK, ROW_NUMBER
MariaDB에서 데이터를 순위 매기기 위해 사용되는 함수로는 RANK(), NTILE(), DENSE_RANK(), ROW_NUMBER()가 있습니다. 이 글에서는 각 함수의 사용법과 예제를 통해 알아봅니다.
RANK 함수
RANK() 함수는 동일한 값에 동일한 순위를 부여하며, 순위 사이에 갭이 발생할 수 있습니다.
SELECT employee_name, salary, RANK() OVER (ORDER BY salary DESC) AS rank
FROM employees;NTILE 함수
NTILE() 함수는 결과 집합을 지정된 수의 그룹으로 나눕니다.
SELECT employee_name, salary, NTILE(4) OVER (ORDER BY salary DESC) AS quartile
FROM employees;DENSE_RANK 함수
DENSE_RANK() 함수는 동일한 값에 동일한 순위를 부여하며, 순위 사이에 갭이 발생하지 않습니다.
SELECT employee_name, salary, DENSE_RANK() OVER (ORDER BY salary DESC) AS dense_rank
FROM employees;ROW_NUMBER 함수
ROW_NUMBER() 함수는 각 행에 고유한 순위를 부여합니다.
SELECT employee_name, salary, ROW_NUMBER() OVER (ORDER BY salary DESC) AS row_num
FROM employees;활용 예제
다음은 각 함수를 활용한 예제입니다.
RANK 함수 예제
SELECT employee_name, salary, RANK() OVER (ORDER BY salary DESC) AS rank
FROM employees;결과: 직원의 이름과 급여를 내림차순으로 정렬하고 순위를 매깁니다.
NTILE 함수 예제
SELECT employee_name, salary, NTILE(4) OVER (ORDER BY salary DESC) AS quartile
FROM employees;결과: 직원의 이름과 급여를 4개의 그룹으로 나눕니다.
DENSE_RANK 함수 예제
SELECT employee_name, salary, DENSE_RANK() OVER (ORDER BY salary DESC) AS dense_rank
FROM employees;결과: 직원의 이름과 급여를 내림차순으로 정렬하고 순위를 매기며, 순위 사이에 갭이 발생하지 않습니다.
ROW_NUMBER 함수 예제
SELECT employee_name, salary, ROW_NUMBER() OVER (ORDER BY salary DESC) AS row_num
FROM employees;결과: 직원의 이름과 급여를 내림차순으로 정렬하고 고유한 순위를 부여합니다.
▼ RANK, NTILE, DENSE_RANK, ROW_NUMBER 함수 예제 실행 화면

참고할 만한 사이트
더 자세한 내용은 다음 사이트들을 참고하세요.
관련 이전 게시글
- MariaDB 데이터 그룹화: GROUP BY 절 사용법
- MariaDB 집계 함수 사용법: COUNT, SUM, AVG, MAX, MIN
- MariaDB 조인 사용법: INNER, LEFT, RIGHT, CROSS JOIN
- MariaDB 서브쿼리 사용법
- MariaDB 조건부 집계: HAVING 절 사용법
이 글이 도움이 되셨다면 공유 부탁 드립니다.


![[SSMS] 로컬 서버(PC)에 설치한 MSSQL 서버 연결하는 방법](https://bluesharehub.com/wp-content/uploads/2022/02/img_41.png)
