프로그래머스 SQL 고득점 킷 재구매가 일어난 상품과 회원 리스트 구하기

hysss·2023년 2월 15일
0

SELECT - 재구매가 일어난 상품과 회원 리스트 구하기

문제 분석

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들을 제거하는 조건이라는 것이다.

profile
매일 매일 규칙적으로

0개의 댓글