
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/131534
USER_INFO 테이블과 ONLINE_SALE 테이블에서 2021년에 가입한 전체 회원들 중 상품을 구매한 회원수와 상품을 구매한 회원의 비율(=2021년에 가입한 회원 중 상품을 구매한 회원수 / 2021년에 가입한 전체 회원 수)을 년, 월 별로 출력하는 SQL문을 작성해주세요. 상품을 구매한 회원의 비율은 소수점 두번째자리에서 반올림하고, 전체 결과는 년을 기준으로 오름차순 정렬해주시고 년이 같다면 월을 기준으로 오름차순 정렬해주세요.
조건이 겁나 길다..
어쩌다 이러케 어려운 문제를...
처음엔 view로 해서 풀다가
SELECT DATE_FORMAT(T.SALES_DATE, '%Y') YEAR, DATE_FORMAT(T.SALES_DATE, '%m') MONTH,
COUNT(T.USER_ID) PUCHASED_USERS, ROUND(COUNT(T.USER_ID)/ COUNT(U.USER_ID), 1) PURCHASED_RATIO
FROM (SELECT O.ONLINE_SALE_ID, U.USER_ID, O.PRODUCT_ID, O.SALES_AMOUNT, O.SALES_DATE
FROM USER_INFO U JOIN ONLINE_SALE O ON U.USER_ID = O.USER_ID
WHERE U.JOINED LIKE ('2021%')) T, USER_INFO U
WHERE U.JOINED LIKE ('2021%')
GROUP BY YEAR, MONTH
ORDER BY YEAR, MONTH
너무 어렵고 헷갈려서 아래 블로그 도움 받음.
https://jaehwaseo.tistory.com/8
조건이 까다로우면 최대한 구해야되는 수들과 조건을 쪼개고 쪼개 구해나가기.
특히 이번 문제에서 21년에 가입한 전체 회원수를 도대체 어떻게 구해야되나 고민이 컸는데
섭쿼리로 구하는 방법, @SET 하는 방법 두 가지 방법이 있더라!
섭쿼리
set
기억해 뒀다가 나중에 써먹어야지