ONLINE_SALE 테이블에서
동일한 회원이 동일한 상품을 재구매한 데이터를 구하여,
재구매한 회원 ID와 재구매한 상품 ID를 출력하는 SQL문을 작성해주세요.
결과는 회원 ID를 기준으로 오름차순 정렬해주시고
회원 ID가 같다면 상품 ID를 기준으로 내림차순 정렬해주세요.
SELECT USER_ID, PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID
HAVING COUNT(*) > 1
ORDER BY USER_ID, PRODUCT_ID DESC
재구매를 했다는 것은 같은 회원 ID, 같은 상품 ID인 레코드가 2개 이상이라는 의미이다.
그렇기 때문에 USER_ID와 PRODUCT_ID로 grouping을 했고,
그룹의 원소의 수가 2개 이상인 레코드들에 대해서만 출력을 하면 된다.
HAVING절은 group을 필터링 하는 것으로, WHERE절과의 차이점은 HAVING절은 group을 제거하는 조건이고 WHERE절은 원래 테이블에서 조건을 만족하지 않는 tuple들을 제거하는 조건이라는 것이다.