반응형
이 글은 프로그래머스 SQL 고득점 Kit 문제와 답을 정리한 글입니다.
*MySQL 버전입니다.
프로그래머스 재구매가 일어난 상품과 회원 리스트 구하기 문제
💡 회원 ID, 상품 ID 출력하기
- 동일 회원이 동일 상품을 재구매한 경우만 출력
- 회원 ID 오름차순, 상품 ID 내림차순 정렬
프로그래머스 재구매가 일어난 상품과 회원 리스트 구하기 답
💡 문제 포인트: 동일 상품을 재구매한 동일 회원 출력
select USER_ID
, PRODUCT_ID
from ONLINE_SALE
group by USER_ID, PRODUCT_ID
having count(USER_ID) >= 2
and count(PRODUCT_ID) >= 2
order by USER_ID, PRODUCT_ID desc;
1. 유저별 구매 상품 매핑하기
select USER_ID
, PRODUCT_ID
from ONLINE_SALE
group by USER_ID, PRODUCT_ID
위 쿼리는 아래의 예시처럼 group by USER_ID, PRODUCT_ID로 인해, 유저별로 구매한 상품들이 매핑된다.
아직 재구매 관련 조건은 걸지 않았기에, 아래 결과만 보면 재구매 여부는 확인할 수 없다.
USER_ID | PRODUCT_ID |
15 | 12 |
114 | 12 |
114 | 1 |
117 | 22 |
118 | 10 |
2. 동일 상품을 재구매한 동일 회원 필터링하기
select USER_ID
, PRODUCT_ID
from ONLINE_SALE
group by USER_ID, PRODUCT_ID
having count(USER_ID) >= 2
and count(PRODUCT_ID) >= 2;
'동일 상품 재구매한 동일 회원'은 동일한 PRODUCT_ID와 동일한 USER_ID 2번 이상 있어야 한다는 말과 같다.
그러므로 count( ) >= 2를 사용하면 되는데, group by를 사용했고 집계함수니까 having 조건식에 작성한다.
그 결과 15, 118번 회원이 12, 10번 제품을 재구매함을 확인할 수 있다.
USER_ID | PRODUCT_ID |
15 | 12 |
118 | 10 |
3. 정렬 조건 입력하기
회원 ID 오름차순, 상품 ID 내림차순 정렬이므로 order by user_id, product_id desc; 입력하면 끝.
반응형
'SQL > 프로그래머스 SQL' 카테고리의 다른 글
MySQL 프로그래머스 즐겨찾기가 가장 많은 식당 정보 출력하기 문제 답 (1) | 2023.11.03 |
---|---|
MySQL 프로그래머스 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 문제 답 (0) | 2023.11.01 |
MySQL 프로그래머스 서울에 위치한 식당 목록 출력하기 문제 답 (1) | 2023.10.25 |
MySQL 프로그래머스 상품을 구매한 회원 비율 구하기 문제 답 (0) | 2023.09.26 |
MySQL 프로그래머스 SQL 고득점 Kit 입양 시각 구하기(1) 문제 답 (0) | 2023.09.25 |