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절에 공백 제외 처리