
문제
https://school.programmers.co.kr/learn/courses/30/lessons/131536프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
- ONLINE_SALE 테이블에서 동일한 회원이 동일한 상품을 재구매한 데이터를 구하여, 재구매한 회원 ID와 재구매한 상품 ID를 출력하는 SQL문을 작성
- 결과는 회원 ID를 기준으로 오름차순 정렬, 회원 ID가 같다면 상품 ID를 기준으로 내림차순 정렬
문제 설명
- ONLINE_SALE 테이블에는 의류 쇼핑몰의 온라인 상품 판매 정보가 담겨 있음
- 같은 유저(USER_ID)가 같은 상품(PRODUCT_ID)을 2번 이상 구매한 경우 → 재구매
- 동일한 날짜, 회원 ID, 상품 ID 조합에 대해서는 하나의 판매 데이터만 존재
정답 코드
SELECT USER_ID, PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID
HAVING COUNT(*) >= 2
ORDER BY 1, 2 DESC
풀이 설명
- GROUP BY USER_ID, PRODUCT_ID: 같은 유저가 같은 상품을 산 기록 그룹화
- HAVING COUNT(*) >= 2: 2번 이상 구매한 경우만 필터링
- HAVING COUNT(PRODUCT_ID) >= 2 도 동일하게 작동하지만,
- 행의 개수 세는 것은 COUNT(*)가 더 명확
'코딩 테스트 연습 > [프로그래머스][리트코드] MySQL' 카테고리의 다른 글
| [LV.4] String, Date > 특정 옵션이 포함된 자동차 리스트 구하기 (3) | 2025.06.23 |
|---|---|
| [LV.4] String, Date > 조건에 맞는 사용자 정보 조회하기 (1) | 2025.06.20 |
| [LV.4] SUM, MAX, MIN > 최댓값 구하기 (0) | 2025.06.19 |
| [LV.4] SELECT > 과일로 만든 아이스크림 고르기 (2) | 2025.06.17 |
| [LV.4] JOIN > 없어진 기록 찾기 (0) | 2025.06.16 |