SQL/프로그래머스

[SQL] 프로그래머스 [Level-5] 상품을 구매한 회원 비율 구하기

SeungyubLee 2022. 12. 2. 11:37

<MySQL>

SELECT DATE_FORMAT(A.SALES_DATE, '%Y') AS YEAR
     , DATE_FORMAT(A.SALES_DATE, '%c') AS MONTH
     , COUNT(DISTINCT A.USER_ID) AS PUCHASED_USERS
     , ROUND(COUNT(DISTINCT A.USER_ID) / (SELECT COUNT(*) FROM USER_INFO WHERE DATE_FORMAT(JOINED, '%Y') = 2021), 1) AS PUCHASED_RATIO
  FROM ONLINE_SALE A
 INNER JOIN USER_INFO B
    ON A.USER_ID = B.USER_ID
   AND DATE_FORMAT(B.JOINED, '%Y') = 2021
 GROUP BY YEAR, MONTH
 ORDER BY CAST(YEAR AS SIGNED), CAST(MONTH AS SIGNED)

<Oracle>

SELECT EXTRACT(YEAR FROM A.SALES_DATE) AS YEAR
     , EXTRACT(MONTH FROM A.SALES_DATE) AS MONTH
     , COUNT(DISTINCT A.USER_ID) AS PUCHASED_USERS
     , ROUND(COUNT(DISTINCT A.USER_ID) / (SELECT COUNT(*) FROM USER_INFO WHERE TO_CHAR(JOINED, 'YYYY') = 2021), 1) AS PUCHASED_RATIO
  FROM ONLINE_SALE A
 INNER JOIN USER_INFO B
    ON A.USER_ID = B.USER_ID
   AND TO_CHAR(B.JOINED, 'YYYY') = 2021
 GROUP BY EXTRACT(YEAR FROM A.SALES_DATE), EXTRACT(MONTH FROM A.SALES_DATE)
 ORDER BY EXTRACT(YEAR FROM A.SALES_DATE), EXTRACT(MONTH FROM A.SALES_DATE)

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