티스토리 뷰

 

 

 

📌 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 쿼리를 향상하고, 데이터 표현을 개선하고,

페이지 매김과 같은 기능을 쉽게 구현할 수 있습니다.

 

 

반응형