티스토리 뷰
📌 SQL ROW_NUMBER 함수
ROW_NUMBER 함수는 조회 결과 내 각 행에 고유한 정수를 할당합니다.
번호는 각 데이터의 첫 번째 행에 대해 1부터 시작됩니다.
이 함수는 'OVER' 절과 함께 행을 분할하고 정렬하는 방법을 정의하는 데 자주 사용됩니다.
ROW_NUMBER() OVER (PARTITION BY column1, column2 ORDER BY column3)
- PARTITION BY: 결과 집합을 ROW_NUMBER 함수가 적용되는 파티션으로 나눕니다.
- ORDER BY: 각 파티션의 행에 번호가 매겨지는 순서를 결정합니다.
📌 기본 사용법
1. 파티션을 나누지 않고 간편하게 사용
SELECT
ROW_NUMBER() OVER (ORDER BY column_name) AS RowNum,
column_name
FROM
table_name;
2. 파티션 나누기와 함께 ROW_NUMBER 사용
SELECT
ROW_NUMBER() OVER (PARTITION BY department ORDER BY salary DESC) AS RowNum,
employee_name,
salary
FROM
employees;
📌 사용 예시
1. 기본 행 번호 매기기
SELECT
ROW_NUMBER() OVER (ORDER BY employee_id) AS RowNum,
employee_name
FROM
employees;
2. 분할을 통한 행 번호 지정
SELECT
ROW_NUMBER() OVER (PARTITION BY department ORDER BY hire_date) AS RowNum,
employee_name,
department
FROM
employees;
3. 페이지 매김에 ROW_NUMBER 사용
WITH RankedEmployees AS (
SELECT
ROW_NUMBER() OVER (ORDER BY hire_date) AS RowNum,
employee_name
FROM
employees
)
SELECT
*FROM
RankedEmployees
WHERE
RowNum BETWEEN 11 AND 20; -- Fetching records for pagination
📌 GOOD 사용법
- ORDER BY와 함께 사용: 일관된 행 번호 지정을 보장하려면 항상 ORDER BY 절을 지정하세요.
- 공용 테이블 표현식(CTE)과 결합: 복잡한 쿼리에 대해 'ROW_NUMBER' 작업을 할 때 가독성을 높이려면 CTE를 사용하세요.
- 페이지 매김에 활용: 애플리케이션에서 페이지 매김을 구현하기 위해 ROW_NUMBER를 활용합니다.
📌 BAD 사용법
- ORDER BY 생략: ORDER BY 절 없이 ROW_NUMBER를 사용하지 마세요. 이는 예측할 수 없는 결과를 초래할 수 있습니다.
- 대규모 데이터 세트에서 과도하게 사용: 필터링 없이 매우 큰 데이터 세트에서 'ROW_NUMBER'를 사용할 때는 성능에 영향을 미칠 수 있으므로 주의하세요.
- 분할 무시: 데이터 세트가 분할을 통해 이점을 얻을 수 있는 경우 이를 무시하면 쿼리가 비효율적으로 이어질 수 있습니다.
SQL ROW_NUMBER 함수는 데이터를 관리하고 분석하기 위한 도구입니다.
효과적으로 사용하는 방법을 이해하면 SQL 쿼리를 향상하고, 데이터 표현을 개선하고,
페이지 매김과 같은 기능을 쉽게 구현할 수 있습니다.
반응형