티스토리 뷰

포스팅에 앞서 내용이 틀릴 수 있습니다.
해당 부분 지적 감사히 받습니다.

문제를 보자.

 

핵심은 (2021년 가입회원 중 물건 산 회원 수/2021년에 가입한 전체 회원수)이다.

 

이번 문제를 풀며 느낀 건... 테이블 조인 시, 조건에 따라 사라지는 행에 대해서도 항상 고려해야 한다는 것을 다시 상기하였다.

 

항상 느끼지만, 문제를 풀기 전에 손부터 가지 말고 방향성부터 정하고 손을 대야 한다.

 

또.. MONTH출력 부분에 1월이면 ex) 1로 출력해야 하는데 to_char() 함수의 형변환을 통해, 01로 출력이 되어 문제 해결에 지연이 있었다.

to_number를 통해 출력하면 01 -> 1로 출력된다.

 

나는 쿼리가 틀린 줄 알고 계속 헤맸다.

 

프로그래머스의 문제는 단순히 문제 로직을 해결할 뿐만 아니라, 함수의 쓰임에 대해서도 다시 한번 생각해 보게 끔 하는 문제들이 많아 참 좋다.

 

쿼리 : 

SELECT  TO_CHAR(SALES_DATE, 'YYYY') AS YEAR,
        TO_NUMBER(TO_CHAR(SALES_DATE, 'MM')) AS MONTH,
        COUNT(DISTINCT O.USER_ID) AS PURCHASED_USERS,
        ROUND(COUNT(DISTINCT USER_ID) / (SELECT COUNT(1) FROM USER_INFO WHERE TO_CHAR(JOINED,'YYYY') = '2021'),1) AS PUCHASED_RATIO
FROM    ONLINE_SALE O
WHERE   O.USER_ID IN (SELECT USER_ID FROM USER_INFO WHERE TO_CHAR(JOINED,'YYYY') = '2021')
GROUP BY TO_CHAR(O.SALES_DATE, 'YYYY'), TO_CHAR(O.SALES_DATE, 'MM')
ORDER BY 1, 2
;

 

 

 

 

댓글