Land of Joe

[mySQL] 년, 월, 성별 별 상품 구매 회원 수 구하기 본문

🧠 DataBase

[mySQL] 년, 월, 성별 별 상품 구매 회원 수 구하기

Arendt 2024. 10. 11. 15:19

문제

  • Table1 : USER_INFO
  • Column
    USER_ID : 회원 ID
    GENDER : 성별
    AGE : 나이
    JOINED : 가입일
  • Table2 : ONLINE_SALE
  • Column
    ONLINE_SALE_ID : 온라인 상품 판매 ID
    USER_ID : 회원 ID
    PRODUCT_ID : 상품 ID
    SALES_AMOUNT : 판매량
    SALES_DATE : 판매일
  • 동일한 날짜, 회원 ID, 상품 ID 조합에 대해서는 하나의 판매 데이터만 존재합니다
  • USER_INFO 테이블과 ONLINE_SALE 테이블에서 년, 월, 성별 별로 상품을 구매한 회원수를 집계하는 SQL문을 작성해주세요. 결과는 년, 월, 성별을 기준으로 오름차순 정렬해주세요. 이때, 성별 정보가 없는 경우 결과에서 제외해주세요.

문제 분석

USER_INFO 테이블과 ONLINE_SALE 테이블에서 => JOIN, ON

년, 월, 성별 별로 상품을 구매한 회원수를 집계하는 SQL문을 작성해주세요. => GROUP BY, SELECT, COUNT(DISTINCT _ )

결과는 년, 월, 성별을 기준으로 오름차순 정렬해주세요. => ORDER BY

이때, 성별 정보가 없는 경우 결과에서 제외해주세요 = WHERE


풀이

SELECT YEAR(B.SALES_DATE),
                MONTH(B.SALES_DATE),
                GENDER,
                COUNT(DISTINCT B.USER_ID) AS 'USERS'
FROM USER_INFO AS A JOIN ONLINE_SALE AS B ON A.USER_ID = B.USER_ID
WHERE A.GENDER IS NOT NULL
GROUP BY YEAR(B.SALES_DATE), MONTH(B.SALES_DATE), A.GENDER
ORDER BY YEAR(B.SALES_DATE), MONTH(B.SALES_DATE), A.GENDER