MariaDB 순위 함수: RANK, NTILE, DENSE_RANK, ROW_NUMBER

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 함수 예제 실행 화면

참고할 만한 사이트

더 자세한 내용은 다음 사이트들을 참고하세요.

관련 이전 게시글

이 글이 도움이 되셨다면 공유 부탁 드립니다.

위로 스크롤