반응형
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

개발 쥬스

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

알고리즘

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

DevJuice 2024. 10. 23. 15:04
반응형

🔗 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/131534

 

프로그래머스

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

programmers.co.kr

 

🔍  해결 과정

위 문제에서 주어진 조건들을 정리하면 다음과 같습니다.

1️⃣ 다뤄야할 데이터 내용은 2021에 가입한 전체 회원들이다.
2️⃣ 구매한 회원의 비율: (2021년에 가입한 회원 중 상품을 구매한 회원수) / (2021년 가입한 전체 회원수)
3️⃣ 년, 월별로 그룹화하기
4️⃣ 회원의 비율은 소수점 둘째자리에서 반올림하기
5️⃣ 년을 기준으로, 월을 기준으로 오름차순 정렬하기
6️⃣ 같은 year, month에 동일한 회원이 구매할 수도 있으므로 중복을 방지해야한다.

 

결론적으로 ONLINE_SALE 테이블과 USER_INFO 테이블을 INNER JOIN 처치를 해준 다음 주어진 조건들에 맞게 단계적으로 쿼리를 작성해주면 됩니다.

 


✏️ 코드

SELECT 
    YEAR(OS.SALES_DATE) AS YEAR,
    MONTH(OS.SALES_DATE) AS MONTH,
    COUNT(DISTINCT OS.USER_ID) AS PURCHASED_USERS,
    ROUND(COUNT(DISTINCT OS.USER_ID) / 
          (SELECT COUNT(*) FROM USER_INFO WHERE YEAR(JOINED) = 2021), 1) 
          AS PUCHASED_RATIO
FROM ONLINE_SALE OS
JOIN USER_INFO UI ON OS.USER_ID = UI.USER_ID
WHERE YEAR(UI.JOINED) = 2021
GROUP BY YEAR, MONTH
ORDER BY YEAR, MONTH;
반응형