[SQL]
[SQL_Programmers] 재구매가 일어난 상품과 회원 리스트 구하기
동그리(Yejin)
2024. 12. 26. 13:51
문제
https://school.programmers.co.kr/learn/courses/30/lessons/131536
사용 개념
- 서브 쿼리
- 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;