SQL

User Shopping Sprees: Amazon SQL Interview Question

sawo11 2025. 4. 28. 03:19

문제풀이 링크: https://datalemur.com/questions/amazon-shopping-spree


👒 아마존 쇼핑 스프리 고객 식별 문제 요약

  • 목적: 쇼핑 스프리를 경험한 고객(user_id)을 식별
  • 조건: 3일 이상 연속으로 구매한 이력이 있어야 하며, 최종 출력은 user_id 기준 오름차순 정렬
  • 쇼핑 스프리 정의:
    • 3일 이상 연속해서 매일 구매한 경우를 쇼핑 스프리로 인정

 

  • 셀프 조인(Self Join) 사용:
    • 같은 테이블을 2번 조인하여 거래 날짜가 +1일, +2일 차이 나는 레코드 연결
    • 이때, user_id가 같은 경우만 조인
  • DATE() 함수로 날짜만 비교:
    • transaction_date에 시간이 포함되기 때문에 DATE()로 시간을 제거하고 날짜만 뽑아 정확한 하루 단위 비교

 

SELECT T1.user_id
FROM transactions T1
JOIN transactions T2
  ON DATE(T2.transaction_date) = DATE(T1.transaction_date) + 1 
    AND T2.user_id = T1.user_id
JOIN transactions T3
  ON DATE(T3.transaction_date) = DATE(T1.transaction_date) + 2
    AND T3.user_id = T2.user_id
ORDER BY T1.user_id;