SQL ROWNUM 함수로 출력되는 행 제한

이제 ROWNUM을 사용한 행 제한에 대해 설명드리겠습니다.

1. 핵심 원리

ROWNUM은 SQL에서 각 행에 고유한 번호를 부여하는 가상 컬럼입니다. 데이터가 조회되는 순서대로 행 번호를 매기며, 주로 결과 집합에서 특정 수의 행만을 선택할 때 사용됩니다. ROWNUMSELECT문에서 바로 사용할 수 있으며, WHERE 절과 결합하여 결과 행의 수를 제한할 수 있습니다.

2. 실무에서 쓰이는 이유

실무에서 ROWNUM은 다음과 같은 이유로 사용됩니다:

  • 페이징 처리: 대량의 데이터를 한 번에 조회하는 대신, 특정 수의 행만 가져와 페이징 처리를 할 때 유용합니다.
  • 데이터 샘플링: 전체 데이터에서 임의의 몇 개의 행만 선택하여 샘플링할 때 사용할 수 있습니다.

3. 실무에서 구체적으로 사용되는 상황

ROWNUM은 다음과 같은 상황에서 자주 사용됩니다:

  • 상위 N개 레코드 조회: 예를 들어, 상위 5명의 최고 매출 고객을 조회할 때.
  • 테스트 데이터 추출: 대량의 데이터셋에서 일부만 추출하여 테스트 데이터로 사용할 때.

예상 상황 예측:

  • 예시 1: 특정 제품의 상위 10개 판매 기록을 조회하여 분석할 때.
  • 예시 2: 고객 데이터베이스에서 상위 100명의 고객을 추출하여 마케팅 캠페인을 준비할 때.

4. 자주 사용되는 윈도우 방식 및 설명

ROWNUM 자체는 윈도우 함수가 아니지만, 행 번호를 부여하고 특정 수의 행만 선택하는 데 유용합니다. 다만, ROWNUM과 함께 사용할 때 주의할 점이 몇 가지 있습니다.

  1. ROWNUM <= N
  • 설명: 결과 집합에서 상위 N개의 행만 선택합니다.
  • 사용 예시:
    sql SELECT ROWNUM, empno, ename, job, sal FROM emp WHERE ROWNUM <= 5;
  1. ORDER BY와의 조합
  • 설명: ROWNUM은 데이터가 조회되는 순서대로 번호를 매기므로, ORDER BY 절과 함께 사용할 때는 서브쿼리를 활용해야 올바르게 동작합니다.
  • 사용 예시:
    sql SELECT * FROM (SELECT empno, ename, job, sal FROM emp ORDER BY sal DESC) WHERE ROWNUM <= 5;

5. 연습 문제

문제 1:

다음의 테이블에서 상위 10명의 급여를 조회하는 SQL 쿼리를 작성하시오.

  • 테이블: employee
  • 열: empno, ename, salary

문제 2:

특정 부서에서 급여가 가장 높은 상위 3명의 직원을 조회하는 SQL 쿼리를 작성하시오.

  • 테이블: employee
  • 열: deptno, empno, salary

6. 연습 문제 해답

해답 1:

SELECT *
FROM (SELECT empno, ename, salary
      FROM employee
      ORDER BY salary DESC)
WHERE ROWNUM <= 10;

해답 2:

SELECT *
FROM (SELECT empno, ename, salary
      FROM employee
      WHERE deptno = 10
      ORDER BY salary DESC)
WHERE ROWNUM <= 3;

7. 응용 문제

문제 1:

각 제품 카테고리별로 판매량이 가장 높은 상위 5개의 제품을 조회하는 SQL 쿼리를 작성하시오.

  • 테이블: product_sales
  • 열: category_id, product_id, sales

문제 2:

각 지역에서 매출이 가장 높은 상위 2개의 지점을 조회하는 SQL 쿼리를 작성하시오.

  • 테이블: branch_sales
  • 열: region, branch_id, revenue

8. 응용 문제 해답

해답 1:

SELECT *
FROM (SELECT category_id, product_id, sales
      FROM product_sales
      ORDER BY sales DESC)
WHERE ROWNUM <= 5;

해답 2:

SELECT *
FROM (SELECT region, branch_id, revenue
      FROM branch_sales
      ORDER BY revenue DESC)
WHERE ROWNUM <= 2;

9. 전자상거래 업계에서의 사용 예시

사용될 수 있는 경우 예측:

  • 베스트셀러 제품 분석: 상위 10개의 베스트셀러 제품을 조회하여 트렌드를 파악할 때.
  • 고객 기여도 분석: 특정 기간 동안 구매 금액이 가장 높은 상위 100명의 고객을 추출하여 분석할 때.

예상 상황 문제:

  1. 특정 카테고리에서 상위 5개의 판매 제품을 조회하는 SQL 쿼리를 작성하시오.
  2. 특정 기간 동안 가장 많이 구매한 상위 10명의 고객을 조회하는 SQL 쿼리를 작성하시오.

SQL 코드 및 시각적 예시

문제 1 SQL 코드:

SELECT *
FROM (SELECT product_id, sales
      FROM product_sales
      WHERE category_id = 'A'
      ORDER BY sales DESC)
WHERE ROWNUM <= 5;
예시 테이블:
product_idsales
1011000
102900
103850
104800
105750

문제 2 SQL 코드:

SELECT *
FROM (SELECT customer_id, total_spent
      FROM customer_purchases
      WHERE purchase_date BETWEEN '2024-01-01' AND '2024-12-31'
      ORDER BY total_spent DESC)
WHERE ROWNUM <= 10;
예시 테이블:
customer_idtotal_spent
0015000
0024500
0034000

Posts created 411

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top