Post

[Programmers/프로그래머스] SQL High Score Kit : 재구매가 일어난 상품과 회원 리스트 구하기 (Oracle)


SQL High Score Kit : 재구매가 일어난 상품과 회원 리스트 구하기


문제


image image image


풀이


  • 회원 ID와 상품 ID의 쌍으로 데이터를 묶고(GROUP BY), 해당 쌍의 개수가 2 이상이면 재구매(HAVING)

  • SELECT 회원 ID, 상품 ID
  • FROM ONLINE_SALE
  • GROUP BY 회원 ID, 상품 ID
  • HAVING COUNT(*)가 2 이상
  • ORDER BY 회원 ID 오름차순, 상품 ID 내림차순;


SQL문


1
2
3
4
5
6
// Oracle
SELECT USER_ID, PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID
HAVING COUNT(*) >= 2
ORDER BY USER_ID, PRODUCT_ID DESC;


배운 점 메모


  1. WHERE과 HAVING의 차이

    • WHERE

      • 그룹화 또는 집계가 발생하기 전에 레코드를 필터링하는데 사용

      • GROUP BY 절 앞에 사용

    • HAVING

      • 그룹화 또는 집계가 발생한 후 레코드를 필터링하는데 사용

      • GROUP BY 절 뒤에 사용