링크
https://school.programmers.co.kr/learn/courses/30/lessons/131534
문제
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로 사용해도 좋을 듯하다
'[업무 지식] > MySQL' 카테고리의 다른 글
[on 조건] Rising Temperature (0) | 2024.10.24 |
---|---|
[NULL] Find Customer Referee (0) | 2024.10.23 |
자동차 대여 기록 별 대여 금액 구하기 (0) | 2024.10.21 |
[기간에 포함되지 않는 날짜] 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 (0) | 2024.10.18 |
[WITH 구문] 임시 테이블 생성 (0) | 2024.10.16 |