[Programmers/프로그래머스] SQL High Score Kit : 재구매가 일어난 상품과 회원 리스트 구하기 (Oracle)
문제
풀이
회원 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;
배운 점 메모
-
WHERE과 HAVING의 차이
-
WHERE
그룹화 또는 집계가 발생하기 전에 레코드를 필터링하는데 사용
GROUP BY 절 앞에 사용
-
HAVING
그룹화 또는 집계가 발생한 후 레코드를 필터링하는데 사용
GROUP BY 절 뒤에 사용
-