상세 컨텐츠

본문 제목

프로그래머스 상품을 구매한 회원 비율 구하기 (MYSQL)

programmers/sql

by nownow 2024. 2. 14. 18:34

본문

SELECT
YEAR(SALES_DATE),
MONTH(SALES_DATE),
COUNT(DISTINCT USER_INFO.USER_ID)AS PURCHASE_USERS,
ROUND(COUNT(DISTINCT USER_INFO.USER_ID) / 
(
    SELECT
    COUNT(*)
    FROM
    USER_INFO
    WHERE YEAR(JOINED)=2021
),1)
FROM
USER_INFO
JOIN
ONLINE_SALE
USING(USER_ID)
WHERE YEAR(USER_INFO.JOINED)=2021
GROUP BY MONTH(SALES_DATE)
ORDER BY 1, 2

USER_INFO 테이블에선 USER_ID가 키 일 것이므로 유일할 것.

ONLINE_SALE 에서는 USER_ID가 UNIQUE 하지 않다.

둘을 USER_ID를 기반으로 JOIN하고

가입년도를 기반으로 필터링 하고 판매 월별로 묶어준다.

월별로 USER_ID를 세주는데, 같은 유저가 같은 달에 여러번 구매했을 수 있으므로

COUNT(DISTINCT) 사용.

 

서브쿼리를 사용해서 그 구한 수를 USER_INFO 테이블에서 2021년에 가입한 회원 수로 나눠준다.

여기선 USER_INFO 테이블만 사용하므로 USER_ID가 UNIQUE 하다 -> COUNT(*) 사용

관련글 더보기