728x90
320x100
MySQL
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 PUCHASED_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
;
Oracle
SELECT TO_CHAR(SALES_DATE, 'YYYY') AS YEAR
, TO_NUMBER(TO_CHAR(SALES_DATE, 'MM')) AS MONTH
, COUNT(DISTINCT(USER_ID)) AS PUCHASED_USERS
, ROUND(COUNT(DISTINCT(USER_ID)) / (SELECT COUNT(USER_ID)
FROM USER_INFO
WHERE TO_CHAR(JOINED, 'YYYY') = '2021'), 1) AS PUCHASED_RATIO
FROM ONLINE_SALE
WHERE USER_ID IN (SELECT USER_ID
FROM USER_INFO
WHERE TO_CHAR(JOINED, 'YYYY') = '2021')
GROUP BY TO_CHAR(SALES_DATE, 'YYYY') , TO_CHAR(SALES_DATE, 'MM')
ORDER BY YEAR, MONTH;
728x90
320x100
'💻 하나씩 차곡차곡 > 프로그래머스 (SQL)' 카테고리의 다른 글
[String, Date/LEVEL2] 카테고리 별 상품 개수 구하기 (MySQL/Oracle) (0) | 2023.06.09 |
---|---|
[String, Date/LEVEL2] DATETIME에서 DATE로 형 변환 (MySQL/Oracle) (0) | 2023.06.08 |
[JOIN/LEVEL4] 그룹별 조건에 맞는 식당 목록 출력하기 (MySQL/Oracle) (0) | 2023.05.30 |
[JOIN/LEVEL4] 보호소에서 중성화한 동물 (MySQL/Oracle) (0) | 2023.05.23 |
[JOIN/LEVEL3] 없어진 기록 찾기 (MySQL/Oracle) (0) | 2023.05.18 |