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 절을 헷갈리지 말라는 문제이다.
'프로그래머스 SQL' 카테고리의 다른 글
| 6. 프로그래머스 SQL lv.3 ( 조건에 맞는 사용자와 총 거래금액 조회하기 ) (0) | 2026.05.08 |
|---|---|
| 5.프로그래머스 SQL lv2.5 (다양한 음식을 즐긴 미식가 찾기 ai생성문제) (0) | 2026.05.04 |
| 4.프로그래머스 SQL lv3 (조건에 맞는 사용자 정보 조회하기) (0) | 2026.05.03 |
| 3.프로그래머스 SQL lv2 (중복제거하기) (0) | 2026.05.03 |
| 1.프로그래머스 SQL lv.3 (자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기) (0) | 2026.04.27 |