본문 바로가기

SQL/프로그래머스 SQL 고득점 kit

SQL 고득점 Kit / 상품을 구매한 회원 비율 구하기 / MySQL

728x90

📚문제

출처 : 프로그래머스(https://school.programmers.co.kr/learn/courses/30/lessons/131534#)

 

📝풀이

SELECT YEAR(SALES_DATE) AS YEAR
     , MONTH(SALES_DATE) AS MONTH
     , COUNT(DISTINCT USER_ID) AS PURCHASED_USERS
     , ROUND(COUNT(DISTINCT USER_ID) / (SELECT COUNT(*) FROM USER_INFO WHERE YEAR(JOINED) = '2021'),1) AS PURCHASED_RATIO
FROM ONLINE_SALE 
WHERE USER_ID IN (SELECT USER_ID
                  FROM USER_INFO
                  WHERE YEAR(JOINED) = '2021')
GROUP BY YEAR,MONTH 
ORDER BY YEAR,MONTH

 

열심히 해서 거의 다 풀었는데 마지막 열 구현에서 막혔다

(SELECT구 서브쿼리 / 스칼라 서브쿼리)

 

그리고 USER_INFO 테이블로 LEFT JOIN하고

ONLINE_SALE테이블의 YEAR로 그룹화하면 NULL값을 그룹화가 되는 문제가 발생하고

 

그로 인해서

연도와 월로 그룹화해도

ONLINE_SALE의 ID와 USER_INFO의 ID수가 같아져서 RATIO가 전부 1로 나오는 상황이 발생했다

 

그래도 몇 달 사이에 이런 어려운 문제도 방향성을 가지고 풀 수 있게 되었다

문제풀이 경험을 바탕으로 계속 어려운 문제에 도전하고 더 성장해야겠다

728x90