문제
풀이
SELECT USER_ID, PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID
HAVING COUNT(USER_ID) > 1
ORDER BY USER_ID, PRODUCT_ID DESC
셀프 조인으로 푼 다른 코드도 있던데, 개인적으로 해당 문제는 having절을 사용하는게 가장 깔끔한 거 같다.
해당 문제는 group by를 하고 조건을 줘서 세어주는 거니까 메인 쿼리에서 해결이 가능하다.
having절은 그룹화된 집계 결과에서 조건식을 적용할 때 사용하는데 having을 사용할 때는 대상이 무엇인지를 봐야한다.
이 문제에서 두개 이상이여야하는 게 뭘까? 바로, USER_ID 나 PRODUCT_ID 이다.
따라서 having 절에 둘중 하나로 필터를 걸어주면 된다.
재구매한 회원이니까 USER_ID 나 PRODUCT_ID가 2개 이상이거나 1개 초과인걸로 필터를 걸어주면 끝!
having절 참고