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

[프로그래머스 - ORACLE] 년, 월, 성별 별 상품 구매 회원 수 구하기

by 코딩하는 흰둥이 2023. 3. 23.
반응형


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
    TO_NUMBER(TO_CHAR(S.SALES_DATE, 'YYYY'))AS YEAR,
    TO_NUMBER(TO_CHAR(S.SALES_DATE, 'MM'))AS MONTH,
    I.GENDER AS GENDER,
    COUNT(DISTINCT(I.USER_ID)) AS USERS
FROM USER_INFO I INNER JOIN ONLINE_SALE S
ON I.USER_ID = S.USER_ID
AND I.GENDER IS NOT NULL
GROUP BY TO_CHAR(S.SALES_DATE, 'YYYY'), TO_CHAR(S.SALES_DATE, 'MM'), I.GENDER
ORDER BY YEAR ASC , MONTH ASC , GENDER ASC

    TO_NUMBER(TO_CHAR(S.SALES_DATE, 'YYYY'))AS YEAR,
    TO_NUMBER(TO_CHAR(S.SALES_DATE, 'MM'))AS MONTH,

부분에서 TO_NUMBER를 사용하지 않으면 틀린 답으로 나온다 왜일까...?

문자열로 바꿔서 타입이 달라서 그런가...

댓글