데이터 분석

흐름을 읽고
인사이트를 만든다.

2.프로그래머스 SQL lv2 (재구매가 일어난 상품과 회원 리스트 구하기)

2026. 4. 28. 14:20프로그래머스 SQL

문제 설명

다음은 어느 의류 쇼핑몰의 온라인 상품 판매 정보를 담은 ONLINE_SALE 테이블 입니다. ONLINE_SALE 테이블은 아래와 같은 구조로 되어있으며 ONLINE_SALE_ID, USER_ID, PRODUCT_ID, SALES_AMOUNT, SALES_DATE는 각각 온라인 상품 판매 ID, 회원 ID, 상품 ID, 판매량, 판매일을 나타냅니다.

동일한 날짜, 회원 ID, 상품 ID 조합에 대해서는 하나의 판매 데이터만 존재합니다.

문제

ONLINE_SALE 테이블에서 동일한 회원이 동일한 상품을 재구매한 데이터를 구하여, 재구매한 회원 ID와 재구매한 상품 ID를 출력하는 SQL문을 작성해주세요. 결과는 회원 ID를 기준으로 오름차순 정렬해주시고 회원 ID가 같다면 상품 ID를 기준으로 내림차

순 정렬해주세요.

 

문제 분석 (무엇을 요구하는 문제인가?)

재구매한 회원 ID와 상품 ID 출력

 

사고 과정

1.GROUP BY USER_ID, PRODUCT_ID 으로 데이터를 그룹화 한다.

2. HAVING COUNT(*) >= 2 를통해 재구매를 판별한다.

3. USER_ID ASC 를 통해 회원 번호가 낮은 순서대로 정렬한다.

4. PRODUCT_ID DESC 를 통해 동일 회원인 경우 상품 번호가 큰 순서대로 정렬한다.

 

이 문제의 핵심은 데이터를 가져올 때 특정 조건 행만 먼저 가져오는 WHERE 절과

GROUP BY를 사용해 묶인 그룹들 중에서 특정 조건을 만족하는 그룹을 골라내는 HAVING 절을 헷갈리지 말라는 문제이다.