SQL/프로그래머스 SQL

MySQL 프로그래머스 재구매가 일어난 상품과 회원 리스트 구하기 문제 답

진리뷰 2023. 10. 30. 09:00
반응형

 

 

MySQL-프로그래머스-재구매가-일어난-상품과-회원-리스트-구하기-문제-답-썸네일
재구매가 일어난 상품과 회원 리스트 구하기

 

 

이 글은 프로그래머스 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; 입력하면 끝.

반응형
top