[업무 지식]/MySQL
상품을 구매한 회원 비율 구하기
에디터 윤슬
2024. 10. 22. 10:12
링크
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로 사용해도 좋을 듯하다