SQL FETCH 및 OFFSET으로 데이터 페이징 및 행 제한

이제 FETCH FIRST N ROWSOFFSET을 사용하여 행을 제한하는 방법에 대해 설명드리겠습니다.

1. 핵심 원리

FETCH FIRST N ROWS ONLYOFFSET은 SQL에서 결과 집합의 특정 행만을 선택하여 출력할 수 있도록 해주는 구문입니다. 이는 페이징(paging)을 구현하거나, 특정 범위의 행을 선택할 때 사용됩니다.

2. 실무에서 쓰이는 이유

실무에서 이러한 구문은 다음과 같은 이유로 사용됩니다:

  • 페이징 처리: 대규모 데이터를 한 번에 조회하는 대신, 페이지 단위로 데이터를 나눠서 조회할 때 유용합니다.
  • 데이터 샘플링: 전체 데이터에서 특정 수의 행만 추출하여 분석이나 테스트에 사용합니다.

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

FETCH FIRST N ROWS ONLYOFFSET은 다음과 같은 상황에서 자주 사용됩니다:

  • 상위 N개의 레코드 조회: 예를 들어, 상위 10명의 고객을 조회하거나 상위 5개의 매출 제품을 조회할 때.
  • 데이터 페이징: 웹 애플리케이션에서 데이터 목록을 페이지 단위로 나누어 보여줄 때.

예상 상황 예측:

  • 예시 1: 가장 많이 판매된 상위 5개의 제품을 조회하여 프로모션을 계획할 때.
  • 예시 2: 고객 리스트를 20명씩 나눠서 페이지 단위로 보여줄 때.

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

이 구문들은 페이징이나 특정 범위의 데이터를 선택할 때 주로 사용됩니다.

  1. FETCH FIRST N ROWS ONLY
  • 설명: 결과 집합에서 상위 N개의 행만 선택합니다.
  • 사용 예시:
    sql SELECT empno, ename, job, sal FROM emp ORDER BY sal DESC FETCH FIRST 4 ROWS ONLY;
  1. OFFSET N ROWS
  • 설명: 결과 집합에서 N개의 행을 건너뛰고 그 이후의 행을 선택합니다.
  • 사용 예시:
    sql SELECT empno, ename, job, sal FROM emp ORDER BY sal DESC OFFSET 5 ROWS;
  1. FETCH FIRST N ROWS WITH TIES
  • 설명: 지정된 N개의 행과 같은 값을 가진 다른 행들도 함께 선택합니다.
  • 사용 예시:
    sql SELECT empno, ename, job, sal FROM emp ORDER BY sal DESC FETCH FIRST 2 ROWS WITH TIES;
  1. OFFSETFETCH FIRST의 조합
  • 설명: 특정 위치에서부터 시작하여 일정 수의 행을 선택할 수 있습니다.
  • 사용 예시:
    sql SELECT empno, ename, job, sal FROM emp ORDER BY sal DESC OFFSET 9 ROWS FETCH FIRST 2 ROWS ONLY;

5. 연습 문제

문제 1:

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

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

문제 2:

급여가 가장 높은 상위 20%의 직원을 조회하는 SQL 쿼리를 작성하시오.

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

6. 연습 문제 해답

해답 1:

SELECT empno, ename, salary
FROM employee
ORDER BY salary DESC
FETCH FIRST 5 ROWS ONLY;

해답 2:

SELECT empno, ename, salary
FROM employee
ORDER BY salary DESC
FETCH FIRST 20 PERCENT ROWS ONLY;

7. 응용 문제

문제 1:

각 제품의 판매량에 따라 상위 10개의 제품을 조회하는 SQL 쿼리를 작성하시오.

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

문제 2:

특정 페이지에서 시작해 상위 20개의 판매 제품을 조회하는 SQL 쿼리를 작성하시오.

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

8. 응용 문제 해답

해답 1:

SELECT product_id, product_name, sales
FROM product_sales
ORDER BY sales DESC
FETCH FIRST 10 ROWS ONLY;

해답 2:

SELECT product_id, product_name, sales
FROM product_sales
ORDER BY sales DESC
OFFSET 10 ROWS FETCH FIRST 20 ROWS ONLY;

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

사용될 수 있는 경우 예측:

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

예상 상황 문제:

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

SQL 코드 및 시각적 예시

문제 1 SQL 코드:

SELECT product_id, product_name, sales
FROM product_sales
ORDER BY sales DESC
FETCH FIRST 10 ROWS ONLY;
예시 테이블:
product_idproduct_namesales
101Product A1000
102Product B900
103Product C850

문제 2 SQL 코드:

SELECT customer_id, total_spent
FROM customer_purchases
ORDER BY total_spent DESC
FETCH FIRST 5 ROWS ONLY;
예시 테이블:
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