Logo SQL Growth

ROW_NUMBER()로 고객별 구매 순서 분석하기

by DataMarvin
Dec 2, 2025
Views: 30
Illustrative Image

📊 고객의 구매 여정을 추적하는 방법

전자상거래 비즈니스에서 가장 중요한 분석 중 하나는 고객의 구매 패턴을 이해하는 것입니다. 첫 구매와 재구매 사이의 간격은 얼마나 될까요? 고객이 몇 번째 구매에서 가장 큰 금액을 지출할까요? 이러한 질문에 답하기 위해서는 각 고객의 구매 이력에 순서를 매길 수 있어야 합니다.

SQL의 윈도우 함수(Window Functions) 중 하나인 ROW_NUMBER()는 바로 이런 순위 매기기 작업에 최적화되어 있습니다.

🎯 윈도우 함수란?

윈도우 함수는 테이블의 행들을 특정 기준으로 그룹화하고, 각 그룹 내에서 계산을 수행하는 강력한 SQL 기능입니다. 일반적인 집계 함수와 달리, 윈도우 함수는 원본 행을 유지하면서 계산 결과를 추가할 수 있습니다.

ROW_NUMBER()의 기본 구조

ROW_NUMBER() OVER( PARTITION BY 그룹_컬럼 ORDER BY 정렬_컬럼 )

이 함수는 세 가지 핵심 요소로 구성됩니다:

  1. ROW_NUMBER(): 각 행에 고유한 순번을 부여하는 함수
  2. PARTITION BY: 데이터를 어떤 기준으로 그룹을 나눌지 지정 (선택사항)
  3. ORDER BY: 각 그룹 내에서 어떤 순서로 번호를 매길지 결정

💡 실무에서의 활용 예시

고객 분석

  • 각 고객의 첫 구매, 두 번째 구매, 세 번째 구매 식별
  • 구매 빈도와 LTV(Lifetime Value) 분석
  • 고객 세그멘테이션 (신규 vs 재구매 고객)

제품 분석

  • 카테고리별 베스트셀러 순위 매기기
  • 시간대별 인기 상품 트래킹

성과 분석

  • 월별 매출 상위 직원 랭킹
  • 지역별 매장 성과 순위

🔍 다른 순위 함수들과의 차이

SQL에는 ROW_NUMBER() 외에도 RANK(), DENSE_RANK() 같은 순위 함수들이 있습니다. 이들의 차이점은 동점 처리 방식입니다:

  • ROW_NUMBER(): 동점이어도 각 행에 고유한 번호 부여 (1, 2, 3, 4...)
  • RANK(): 동점이면 같은 순위, 다음 순위는 건너뜀 (1, 2, 2, 4...)
  • DENSE_RANK(): 동점이면 같은 순위, 다음 순위는 이어감 (1, 2, 2, 3...)

🎓 직접 연습해보세요

이론만으로는 부족합니다. 실제 전자상거래 데이터를 활용한 연습 문제를 통해 ROW_NUMBER() 함수를 마스터해보세요.

온라인 쇼핑몰의 주문 데이터에서 각 고객의 구매 이력을 시간순으로 번호를 매기는 쿼리를 작성하는 문제입니다. 실무에서 자주 마주치는 시나리오를 직접 해결하면서 윈도우 함수의 강력함을 체감할 수 있습니다.

난이도: Medium

예상 소요 시간: 10-15분

획득 포인트: 100점

👉 문제 풀러 가기

More

Based on Tags

Recent Popular

Most Popular

  • SQL SELECT 가이드

    SQL SELECT 기초부터 실전 활용까지

    Illustrative Image
  • 데이터 분석을 위한 SQL 입문 - 왜 SQL부터 시작해야 할까?

    SQL이 첫번째 언어여야 하는 이유

    Illustrative Image
  • SQL로 전환 여부 파악하기

    클릭은 있지만 전환은 없는 셀러 찾기

    Illustrative Image