[SQL]

[SQL_Programmers] 재구매가 일어난 상품과 회원 리스트 구하기

동그리(Yejin) 2024. 12. 26. 13:51

문제

https://school.programmers.co.kr/learn/courses/30/lessons/131536

 

사용 개념

- GROUP BY & HAVING / WHERE

- 서브 쿼리

- DISTINCT

 

코드

직접 사용 방식

- 단순한 조건에서 더 적합하며 간단히 동작

SELECT USER_ID, PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID
HAVING COUNT(USER_ID) > 1
ORDER BY USER_ID ASC, PRODUCT_ID DESC;

 

서브쿼리 사용 방식

- 조건이 분리되어 명확하게 보여짐

- 서브쿼리 재활용 가능

- 조건이 많거나 테이블이 복잡한 경우에도 유지보수가 쉬움

SELECT DISTINCT USER_ID, PRODUCT_ID
FROM ONLINE_SALE
WHERE (USER_ID, PRODUCT_ID) IN (
    SELECT USER_ID, PRODUCT_ID
    FROM ONLINE_SALE
    GROUP BY USER_ID, PRODUCT_ID
    HAVING COUNT(*) > 1
)
ORDER BY USER_ID ASC, PRODUCT_ID DESC;