[프로그래머스] 상품을 구매한 회원 비율 구하기

yenpkr·2025년 3월 11일
0

sql

목록 보기
52/91

문제

제출

SELECT YEAR(sales_date) YEAR, MONTH(sales_date) MONTH, count(distinct b.user_id) PURCHASED_USERS, round(count(distinct b.user_id)/(select count(distinct user_id) from USER_INFO where YEAR(joined)=2021),1) PUCHASED_RATIO
from USER_INFO a
join ONLINE_SALE b
on a.user_id = b.user_id
where YEAR(joined) = 2021
group by 1,2
order by 1 asc, 2 asc

구매를 여러번 한 user_id가 존재하므로 distinct를 사용해 중복 제외시켜 조회해야 한다.

📌 알게된 점

SELECT 문에도 서브쿼리 작성 가능하다.

또 다른 답

SELECT YEAR(sales_date) YEAR, MONTH(sales_date) MONTH, count(distinct user_id) PURCHASED_USERS, round(count(distinct user_id)/(select count(distinct user_id) from USER_INFO where YEAR(joined)=2021),1) PUCHASED_RATIO
from ONLINE_SALE a
where a.user_id in (select user_id from USER_INFO where YEAR(joined) = 2021)
group by 1,2
order by 1 asc, 2 asc

join을 사용하지 않고 where에서 조건에 부합하는(2021년에 가입한) user_id를 필터링했다.

0개의 댓글