Language/SQL

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

공부좀하시졍 2022. 12. 20. 11:08

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

 

프로그래머스

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

programmers.co.kr

SELECT YEAR(b.SALES_DATE) as YEAR, MONTH(b.SALES_DATE) as MONTH, count(DISTINCT(b.USER_ID)) as PUCHASED_USERS, 
    ROUND(count(DISTINCT(b.USER_ID)) / (SELECT COUNT(*) FROM USER_INFO WHERE YEAR(JOINED) = '2021'), 1) as 
    PUCHASED_RATIO
FROM USER_INFO a JOIN ONLINE_SALE b
ON a.USER_ID = b.USER_ID
WHERE YEAR(a.JOINED) = '2021'
GROUP BY YEAR, MONTH
ORDER BY YEAR, MONTH;

문제를 이해하는데 조금 오래 걸렸다.

우선 주의할 점이 몇가지 있다.

1. PUCHASED_USERS는 2021년에 가입한 전체 회원들 중 상품을 구매한 회원 수 이므로 한 회원이 상품을 여러개 구매하는 경우를 고려해 DISTINCT로 중복을 제거해야한다.

2. PUCHASED_RATIO는 (2021년에 가입한 회원 중 상품을 구매한 회원 수 / 2021년에 가입한 전체 회원수) 다.

이때, 분자는 PUCHASED_USERS와 동일하고, 분모는 WHERE절로 2021년에 가입한 조건만 걸어주면된다.