[SQL] 프로그래머스 SQL 고득점 Kit_JOIN (11/12)

餘園·2025년 8월 10일

SQL 고득점 Kit

목록 보기
85/109
post-thumbnail

상품을 구매한 회원 비율 구하기 (Level 4)

USER_INFO 테이블과 ONLINE_SALE 테이블에서 2021년에 가입한 전체 회원들 중 상품을 구매한 회원수와 상품을 구매한 회원의 비율(=2021년에 가입한 회원 중 상품을 구매한 회원수 / 2021년에 가입한 전체 회원 수)을 년, 월 별로 출력하는 SQL문을 작성해주세요. 상품을 구매한 회원의 비율은 소수점 두번째자리에서 반올림하고, 전체 결과는 년을 기준으로 오름차순 정렬해주시고 년이 같다면 월을 기준으로 오름차순 정렬해주세요.

solve

SELECT YEAR(o.SALES_DATE) AS YEAR,
    MONTH(o.SALES_DATE) AS MONTH,
    COUNT(DISTINCT o.USER_ID) AS PURCHASED_USERS,
    ROUND(COUNT(DISTINCT o.USER_ID)/COUNT(o.USER_ID), 1) AS PURCHASED_RATIO
    FROM USER_INFO u
    JOIN ONLINE_SALE o ON u.USER_ID = o.USER_ID
    WHERE u.JOINED LIKE '2021%'
    GROUP BY YEAR(o.SALES_DATE), MONTH(o.SALES_DATE)
    ORDER BY YEAR, MONTH
  • 오답, 분모가 틀린 듯.
SELECT YEAR(o.SALES_DATE) AS YEAR,
    MONTH(o.SALES_DATE) AS MONTH,
    COUNT(DISTINCT o.USER_ID) AS PURCHASED_USERS,
    ROUND(COUNT(DISTINCT o.USER_ID) / (SELECT COUNT(DISTINCT USER_ID)
        FROM USER_INFO
        WHERE YEAR(JOINED) = 2021), 1) AS PURCHASED_RATIO
    FROM USER_INFO u
    JOIN ONLINE_SALE o ON u.USER_ID = o.USER_ID
    WHERE u.JOINED LIKE '2021%'
    GROUP BY YEAR(o.SALES_DATE), MONTH(o.SALES_DATE)
    ORDER BY YEAR, MONTH
  • GROUP BY 하지 않은 행의 갯수로 분모가 들어감.
profile
What else can I do

0개의 댓글