상세 컨텐츠

본문 제목

[TIL] week 2 wed - having

☆ 추가 학습 필요

by ollive 2024. 7. 3. 21:31

본문

코드카타 스터디에서 배운 문법으로, HAVING에 집계함수를 넣을 수 있다고 한다.

 

<문제 >ONLINE_SALE 테이블에서 동일한 회원이 동일한 상품을 재구매한 데이터를 구하여, 재구매한 회원 ID와 재구매한 상품 ID를 출력하는 SQL문을 작성해주세요. 결과는 회원 ID를 기준으로 오름차순 정렬해주시고 회원 ID가 같다면 상품 ID를 기준으로 내림차순 정렬해주세요.  

select USER_ID, PRODUCT_ID
from 
(
SELECT USER_ID, PRODUCT_ID, count(distinct SALES_DATE) cnt_order
from ONLINE_SALE
group by 1,2
) a
WHERE cnt_order >= 2
ORDER BY USER_ID, PRODUCT_ID DESC

원래는 위의 식으로 작성하였는데, HAVING COUNT(*) >= 2 을 넣으면 더 간단하게 작성할 수 있다. 날자를 세기 위해 서브쿼리를 만들기 않아도 된다. 또한 HAVING 집계함수 절은 GROUP BY 없이도 사용할 수 있다. 

select USER_ID, PRODUCT_ID
from ONLINE_SALE
group by 1,2
HAVING COUNT(DISTINCT SALES_DATE) >= 2
ORDER BY USER_ID, PRODUCT_ID DESC

 

'☆ 추가 학습 필요' 카테고리의 다른 글

[TIL] WEEK 4 MON - CROSS JOIN, 같은 테이블 JOIN  (0) 2024.07.15
[SQL] JOIN 정리  (1) 2024.07.03

관련글 더보기