🔗 1. 문제 URL
https://school.programmers.co.kr/learn/courses/30/lessons/131536
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
📝 2. 문제 요구사항 정리
ONLINE_SALE 테이블에는 온라인 상품 판매 정보가 저장되어 있으며, 동일한 날짜·회원·상품 조합은 한 번만 기록됩니다.
이 문제에서는 동일한 회원이 동일한 상품을 2번 이상 구매한 경우(재구매)를 찾아야 합니다.
✔ 요구사항 요약
- 재구매한 USER_ID, PRODUCT_ID 출력
- USER_ID 기준 오름차순 정렬
- 같은 회원이라면 PRODUCT_ID 기준 내림차순 정렬
💡 3. 핵심 개념
이 문제는 회원 ID + 상품 ID 기준으로 그룹화하여 구매 횟수를 확인하는 것이 핵심입니다.
적용되는 SQL 핵심 요소는 다음과 같습니다.
- GROUP BY USER_ID, PRODUCT_ID
- HAVING COUNT(*) >= 2 → 해당 상품을 2번 이상 구매했는지 확인
- ORDER BY USER_ID ASC, PRODUCT_ID DESC
즉, 동일한 회원·상품 조합이 몇 번 등장했는지를 기준으로 재구매 여부를 판단합니다.
✅ 4. 정답 SQL 코드
SELECT USER_ID, PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID
HAVING COUNT(*) >= 2
ORDER BY USER_ID ASC, PRODUCT_ID DESC;
-- 재구매한 회원 ID와 재구매한 상품 ID를 출력하는 SQL문
-- 재구매 = 유저ID, 상품ID가 동일한게 두번 이상 나타나야 함.
💬 5. 풀이하면서 느낀 점
이번 문제는 GROUP BY 절에서 여러 컬럼을 함께 사용해 그룹화하는 방식과
ORDER BY 절에서 두 가지 정렬 기준을 적용하는 흐름을 익힐 수 있는 구조였습니다.
전체적인 난이도는 높지 않아 기본 개념만 이해하고 있다면 무리 없이 해결할 수 있는 문제였습니다.
궁금하신 점이나 포스팅에 대한 피드백이 있다면 댓글로 편하게 남겨주세요.
도움이 되셨다면 공감이나 댓글 한 줄 남겨주시면 포스팅을 이어가는 데 큰 힘이 됩니다. 😊
'코딩테스트 > MYSQL' 카테고리의 다른 글
| [프로그래머스 LV.2] 상품 별 오프라인 매출 구하기 — MySQL 정답 & 해설 (0) | 2025.12.08 |
|---|---|
| [프로그래머스 LV.2] 분기별 분화된 대장균의 개체 수 구하기 — MySQL 정답 & 해설 (0) | 2025.12.03 |
| [프로그래머스 LV.2] 성분으로 구분한 아이스크림 총 주문량 — MySQL 정답 & 해설 (0) | 2025.12.01 |
| [프로그래머스 LV.2] 조건에 맞는 도서와 저자 리스트 출력하기 — MySQL 정답 & 해설 (3) | 2025.11.29 |
| [프로그래머스 LV.2] 조건에 맞는 사원 정보 조회하기 — MySQL 정답 & 해설 (0) | 2025.11.29 |