Data Analyst KIM

[MySQL] 년, 월, 성별 별 상품 구매 회원 수 구하기(프로그래머스_Lv.4) 본문

데이터 분석/Coding Test

[MySQL] 년, 월, 성별 별 상품 구매 회원 수 구하기(프로그래머스_Lv.4)

김두연 2023. 10. 26. 10:44
반응형

<문제>


<예시>


<나의 문제 풀이>

USER_INFO 와 ONLINE_SALE을 INNER JOIN으로 묶어주고 성별 값이 누락인 값은 제외시켜준다.

년도,월,성별 별로 상품을 구매한 회원수를 구해야하기 때문에 년도와 월의 컬럼을 만들어준다.

이 후 WITH를 활용하여 UserSales 테이블을 만들어준다.

 

UserSales 에서 GROUP BY를 이용하여 년도,월,성별에 따라 집계해주고

SELECT절에서 user_id를 세어주는데 회원수이기 때문에 한명의 회원이 10번 구매한 것은 1번으로 봐야한다.

따라서 DISTINCT로 중복을 제거해준다.

 

WITH UserSales AS (
    SELECT u.USER_ID AS user_id,
           u.GENDER,
           o.SALES_DATE,
           YEAR(o.SALES_DATE) AS year,
           MONTH(o.SALES_DATE) AS month
    FROM USER_INFO u
    INNER JOIN ONLINE_SALE o ON u.USER_ID = o.USER_ID
    WHERE u.GENDER IS NOT NULL
)

SELECT year
     , month
     , gender
     , COUNT(DISTINCT user_id)
FROM UserSales
GROUP BY year,month,gender

 

반응형