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(*) 사용
프로그래머스 자동차 대여금액 문제들 (Mysql) (0) | 2024.02.14 |
---|---|
프로그래머스 입양 시각 구하기(2) (MYSQL) (0) | 2024.02.13 |
프로그래머스 - 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 (Mysql) (0) | 2024.02.13 |
프로그래머스 - 식품분류별 가장 비싼 식품의 정보 조회하기(MySQL) (0) | 2024.02.13 |