728x90
📚문제
📝풀이
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
'SQL > 프로그래머스 SQL 고득점 kit' 카테고리의 다른 글
프로그래머스 / SQL 코딩테스트 연습 / 우유와 요거트가 담긴 장바구니 / MySQL (0) | 2023.11.20 |
---|---|
SQL 고득점 Kit / 자동차 대여 기록에서 장기/단기 대여 구분하기 / MySQL(DATEDIFF 함수) (0) | 2023.11.14 |
SQL 고득점 Kit / 그룹별 조건에 맞는 식당 목록 출력하기 - MySQL (1) | 2023.11.03 |
SQL 고득점 Kit / 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 - MySQL (WHERE절 서브쿼리) (0) | 2023.11.02 |
SQL 고득점 Kit / 주문량이 많은 아이스크림들 조회하기 - MySQL (0) | 2023.11.02 |