본문 바로가기
프로그래머스/[프로그래머스 - ORACLE] Lv.5

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

by 코딩하는 흰둥이 2023. 3. 22.


CREATE 문
CREATE TABLE USER_INFO  (
USER_ID			NUMBER			NOT NULL,
GENDER			NUMBER			NULL,
AGE			NUMBER			NULL,
JOINED			DATE			NOT NULL
)


CREATE TABLE ONLINE_SALE (
ONLINE_SALE_ID		NUMBER		NOT NULL,
USER_ID			NUMBER		NOT NULL,
PRODUCT_ID		NUMBER		NOT NULL,
SALES_AMOUNT		NUMBER		NOT NULL,
SALES_DATE		DATE		NOT NULL
)

  • 내 풀이
SELECT
    YEAR(O.SALES_DATE) AS YEAR,
    MONTH(O.SALES_DATE) AS MONTH,
    COUNT(DISTINCT(U.USER_ID)) AS PUCHASED_USERS,
    ROUND(COUNT(DISTINCT(U.USER_ID)) / (SELECT COUNT(USER_ID) FROM USER_INFO WHERE JOINED LIKE '2021%'), 1) AS PUCHASED_RATIO
FROM USER_INFO U INNER JOIN ONLINE_SALE O
ON U.USER_ID = O.USER_ID
AND YEAR(U.JOINED) = 2021
GROUP BY YEAR(O.SALES_DATE) , MONTH(O.SALES_DATE)
ORDER BY MONTH(O.SALES_DATE) ASC;

SQL은 어려울 것이 많이 없었는데 문제를 이상하게 써놔서 이해하는게 더 오래 걸린거 같네...

YEAR , MONTH 함수는 평소에 잘 쓰지 않던 건데 좋은 걸 배웠다

Oracle에서 Mysql로 설정이 변경되어 있었다 그래 뭔가 이상하더라...

둘다 사용하다보니 더 헷갈린다

TO_CHAR(S.SALES_DATE, 'YYYY')AS YEAR,

TO_CHAR(S.SALES_DATE, 'MM')AS MONTH, 변경해야함

 

댓글