[고득점 SQL kit] - 45**

Dreamer ·2023년 1월 14일
0

고득점 SQL KIT

목록 보기
2/53

1. quiz

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

2. answer

SELECT YEAR(SALES_DATE) AS YEAR,
    MONTH(SALES_DATE) AS MONTH,
    COUNT(DISTINCT u.USER_ID) AS PUCHASED_USERS,
    ROUND(COUNT(DISTINCT u.USER_ID) / COUNT, 1) AS PUCHASED_RATIO
FROM ONLINE_SALE o
    INNER JOIN (
        SELECT USER_ID,
            COUNT(*) OVER() AS COUNT
        FROM USER_INFO
        WHERE JOINED BETWEEN '2021-01-01' AND '2021-12-31'
    ) u ON u.USER_ID = o.USER_ID
GROUP BY YEAR,MONTH
ORDER BY YEAR, MONTH
SELECT YEAR(sales_date) AS year
        ,MONTH(sales_date) AS month
        ,count(DISTINCT O.user_id) AS puchased_users
        ,round(count(DISTINCT O.user_id) / COUNT,1) as puchased_ratio
FROM online_sale O 
JOIN (
    SELECT user_id,
            count(*) over() AS COUNT
    FROM user_info
    WHERE DATE_FORMAT(joined, '%Y') = '2021'
    ) B 
    ON O.user_id = B.user_id
GROUP BY year, month
ORDER BY year, month;
  • count(*) over() AS ~~ 전체 총합을 테이블에 입력 가능!!
profile
To be a changer who can overturn world

0개의 댓글