티스토리 뷰

Lv4. 년, 월, 성별 별 상품 구매 회원 수 구하기

문제

USER_INFO 테이블과 ONLINE_SALE 테이블에서 년, 월, 성별 별로 상품을 구매한 회원수를 집계하는 SQL문을 작성해주세요. 결과는 년, 월, 성별을 기준으로 오름차순 정렬해주세요. 이때, 성별 정보가 없는 경우 결과에서 제외해주세요.

- USER_INFO 테이블과 ONLINE_SALE 테이블 JOIN 

- 년, 월, 성별 상품 별로 상품 구매한 회원수 집계 -> GROUP BY 여러개! 

- 성별 정보 없는 경우 결과 제외 : WHERE IS NOT NULL

 

풀이 

* AS는 SELECT문에만 사용가능하다

SELECT YEAR(SALES_DATE) AS YEAR, MONTH(SALES_DATE) AS MONTH, GENDER, COUNT(DISTINCT O.USER_ID) AS USERS 
FROM ONLINE_SALE AS O JOIN USER_INFO AS U ON U.USER_ID = O.USER_ID
WHERE GENDER IS NOT NULL
GROUP BY YEAR(SALES_DATE), MONTH(SALES_DATE), GENDER
ORDER BY 1,2,3;

- ⭐구매한 회원 수 구할 때, 동일 회원이 같은달 2회 이상 구매한 경우도 있을 수 있으므로 user_id를 기준으로 DISTINCT 처리가 필요!!!- ⭐ 성별 정보 없는 경우 결과 제외해줘야 한다고 했으므로 WHERE GENDER IS NOT NULL