[프로그래머스]상품을 구매한 회원 비율 구하기

김준석·2024년 2월 4일

코딩테스트 - SQL

목록 보기
53/96

문제

https://school.programmers.co.kr/learn/courses/30/lessons/131534

코드

SELECT
    YEAR(onl.sales_date) AS YEAR,
    MONTH(onl.sales_date) AS MONTH,
    COUNT(DISTINCT onl.USER_ID) AS PUCHASED_USERS,
    ROUND(COUNT(DISTINCT onl.USER_ID)/
          (SELECT COUNT(DISTINCT USER_ID) FROM USER_INFO WHERE YEAR(JOINED)='2021'),1) AS PUCHASED_RATIO
FROM
    USER_INFO us
    LEFT JOIN ONLINE_SALE onl
        ON us.USER_ID=onl.USER_ID
WHERE 1=1
    AND YEAR(us.JOINED) = '2021'
GROUP BY
    YEAR,
    MONTH
HAVING 1=1
    AND YEAR IS NOT NULL
ORDER BY
    YEAR,
    MONTH

후기

LEFT JOIN을 했기때문에 COUNT 할 때 가입자와 구매자가 따로 계산될 줄 알았다.
하지만 그룹화 후의 카운트이기 때문에 따로 되지 않았고 이때문에 서브쿼리를 써줌.

구매를 안한 월도 있는 듯 하다. 공백으로 나옴.
그렇기 때문에 HAVING절에 공백 제외 처리

0개의 댓글