본문 바로가기
[업무 지식]/MySQL

상품을 구매한 회원 비율 구하기

by 에디터 윤슬 2024. 10. 22.
 

링크

https://school.programmers.co.kr/learn/courses/30/lessons/131534

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제

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

정답

select year(sales_date) as year,
        month(sales_date) as month,
        count(distinct user_id) as purchased_users,
        round(count(distinct user_id) / (select count(distinct user_id)
from user_info
where joined like '2021%'), 1) as ratio
from (
    select u.user_id,
            joined,
            sales_date
    from user_info u
    inner join online_sale o
    on u.user_id = o.user_id
    ) a
where joined like '2021%' 
group by year(sales_date), 2
order by 1, 2

해설

  • 2021년 가입한 회원 수의 정확한 수치를 구하기 위해 select문을 따로 사용.

새롭게 이해한 내용

  • 정확한 수치 하나가 필요할 때는 select문을 따로 지정하여 with문이나 select로 사용해도 좋을 듯하다