[MySQL] programmers) 상품을 구매한 회원 비율 구하기

자두·2023년 2월 17일
post-thumbnail

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

테이블 설명

요악하자면
1. 2021년에 가입한 전체 회원들 중 상품을 구매한 회원수 구하기
2. 상품을 구매한 회원의 비율 구하기
3. 그걸 년, 월 별로 구분
4. 소수점 두번째자리에서 반올림 & 전체 결과는 년을 기준으로 오름차순 정렬 & 년도가 같다면 월을 기준으로 오름차순 정렬


SELECT DATE_FORMAT(sale.SALES_DATE, '%Y') YEAR, -- 년도 구분
       DATE_FORMAT(sale.SALES_DATE, '%m') MONTH, -- 월별 구분
       COUNT(DISTINCT sale.USER_ID) PUCHASED_USERS, -- 2021년에 가입한 전체 회원들 중 상품을 구매한 회원수
       ROUND(COUNT(DISTINCT sale.USER_ID)  / (SELECT COUNT(USER_ID)
                                              FROM USER_INFO
                                              WHERE YEAR(JOINED) = '2021'), 1) PUCHASED_RATIO -- 상품 구매한 회원의 비율
             
FROM USER_INFO user JOIN ONLINE_SALE sale 
     ON user.USER_ID = sale.USER_ID

WHERE YEAR(JOINED) = '2021'
GROUP BY YEAR, MONTH

상품 구매한 회원 비율DISTINCT 해주는 이유
고객 한 명이 2021년도에 중복 구매를 했을 수도 있으니 중복제거 필수

profile
하고 싶은 일과 해야 하는 일을 병행하는 데이터 분석기

0개의 댓글