풀이
이 문제에서 주의해야할 부분은 '재구매'이다.
재구매란 같은 고객이 같은 물품을 중복 구매하는 것을 말한다.
* 같은 고객이더라도 다른 물품을 구매했다면 재구매에 해당하지 않는다
따라서, 일단 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
'DataBase > SQL 문제풀이' 카테고리의 다른 글
[SQL 문제풀이] 저자 별 카테고리 별 매출액 집계하기 (1) | 2023.12.20 |
---|---|
[프로그래머스] SELECT / 오프라인/온라인 판매 데이터 통합하기 (0) | 2022.12.13 |
[프로그래머스] GROUP BY / 가격대 별 상품 개수 구하기 (0) | 2022.11.30 |
[프로그래머스] GROUP BY / 가격대 별 상품 개수 구하기 (0) | 2022.11.04 |
[programmers] (GROUP BY) 진료과별 총 예약 횟수 출력하기 (0) | 2022.11.04 |