노아

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

알고리즘/SQL

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

Noaahhh 2024. 9. 20. 23:10

 

Question

 

USER_INFO 테이블과 ONLINE_SALE 테이블에서 2021년에 가입한 전체 회원들 중 상품을 구매한 회원수와 상품을 구매한 회원의 비율(=2021년에 가입한 회원 중 상품을 구매한 회원수 / 2021년에 가입한 전체 회원 수)을 년, 월 별로 출력하는 SQL문을 작성해주세요. 상품을 구매한 회원의 비율은 소수점 두번째자리에서 반올림하고, 전체 결과는 년을 기준으로 오름차순 정렬해주시고 년이 같다면 월을 기준으로 오름차순 정렬해주세요.

 

 

Pseudocode

 

 

  1. 선택할 열 지정:
    • SALES_DATE에서 연도와 월을 추출하여 YEAR 및 MONTH라는 별칭을 부여합니다.
    • 고유한 구매자 수 (DISTINCT USER_ID)를 세어 PURCHASED_USERS라는 별칭을 부여합니다.
    • 2021년에 가입한 사용자 수로 나눈 구매자 비율을 계산하여 PURCHASED_RATIO라는 별칭을 부여합니다.
  2. 테이블 조인:
    • ONLINE_SALE 테이블을 USER_INFO 테이블과 USER_ID를 기준으로 조인합니다.
  3. 필터링 조건:
    • JOINED 필드가 '2021%'로 시작하는 레코드만 선택합니다.
  4. 그룹화:
    • 연도와 월별로 결과를 그룹화합니다.
  5. 정렬:
    • 연도와 월에 따라 오름차순으로 정렬합니다.

 

 

 

Code

 

SELECT
    YEAR (SALES_DATE) YEAR, 
    MONTH (SALES_DATE) MONTH, 
    COUNT (DISTINCT a.USER_ID) PURCHASED_USERS, 
    Round(COUNT (DISTINCT a.USER_ID)/(SELECT COUNT (*) FROM USER_INFO WHERE JOINED LIKE '2021%'),     1) AS PUCHASED_RATIO
FROM ONLINE_SALE a JOIN USER_INFO b
ON a.USER_ID = b.USER_ID
WHERE JOINED LIKE '2021%'
GROUP BY 1, 2
ORDER BY 1, 2