본문 바로가기

SQL

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

 

 

 

풀이 TIP
서브쿼리 사용
+ YEAR, MONTH 함수 사용
+ JOIN 어떻게 할지 고민하기

 

 

 

오래 걸릴 문제가 아니었는데,

MONTH 함수 사용하지 않고 DATE_FORMAT(DATE, '%c')로 반환했더니 틀렸다.

DATE_FORMAT(DATE, '%m')로 해야 정답 처리 되었다. (대체 왜 ????????)

사실 아직도 왜 틀린지 모르겠지만, 다른 분의 풀이를 보고 더 간단하게 푸는 법을 알았으니 뭐~...

 

 

 

 

 

 

 

내 풀이

SELECT YEAR(SALES_DATE) YEAR,
MONTH(SALES_DATE) MONTH,
COUNT(DISTINCT ONLINE_SALE.USER_ID) AS PUCHASED_USERS,
ROUND(COUNT(DISTINCT ONLINE_SALE.USER_ID) / (SELECT COUNT(USER_ID)
                                             FROM USER_INFO
                                             WHERE YEAR(JOINED) = '2021'), 1) AS RATIO
FROM USER_INFO
LEFT OUTER JOIN ONLINE_SALE
ON USER_INFO.USER_ID = ONLINE_SALE.USER_ID
WHERE YEAR(JOINED) = '2021' AND ONLINE_SALE.USER_ID IS NOT NULL
GROUP BY YEAR, MONTH