DataBase/SQL 문제풀이
[프로그래머스] SELECT / 재구매가 일어난 상품과 회원 리스트 구하기
Dev_Green
2022. 12. 6. 16:11
풀이
이 문제에서 주의해야할 부분은 '재구매'이다.
재구매란 같은 고객이 같은 물품을 중복 구매하는 것을 말한다.
* 같은 고객이더라도 다른 물품을 구매했다면 재구매에 해당하지 않는다
따라서, 일단 GROUP BY의 대상은 user_id와 product_id가 된다.
이때 GROUP BY의 조건절에 해당하는 HAVING 함수가 중요한 역할을 한다.
구매내역의 id에 해당하는 online_sale_id를 기준으로 갯수를 파악했을 때 1보다 큰 경우(즉, 2 이상의 수)만 선택되도록 하여 재구매에 해당하는 내역만을 선별한다.
코드
SELECT user_id, product_id
FROM online_sale
GROUP BY user_id, product_id
HAVING COUNT(online_sale_id) > 1
ORDER BY user_id, product_id DESC
출처
https://school.programmers.co.kr/learn/courses/30/lessons/131536
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr