MySQL 실습 | 상품을 구매한 회원 비율 구하기

2025. 1. 15. 12:18·SQL

`복습하기`

문제 1.  상품을 구매한 회원 비율 구하기

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


💡 문제 풀이 

`내 풀이`

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(USER_ID) FROM USER_INFO WHERE YEAR(JOINED)='2021'),1) AS PUCHASED_RATIO
FROM ONLINE_SALE
LEFT JOIN USER_INFO USING(USER_ID)
WHERE YEAR(JOINED)='2021'
GROUP BY YEAR, MONTH
ORDER BY YEAR, MONTH;

 

`오답노트`

  • 우선 문제를 잘못 이해해서 시간을 엄청나게 날림. 연,월이 가입일자 기준인 줄 알았는데 판매 데이터 기준이었음.
  • 두번째로는  PURCHASED_RATIO를 구할 때 COUNT(DISTINCT USER_ID)/ COUNT(USER_ID)로 했어서 오답이 나옴. 이미 LEFT JOIN이 되어있기 때문에 USER_ID의 숫자가 sales 숫자로 나오기 때문에 user 수를 구하려고 select문 사용함

`다른 풀이`

ELECT YEAR(B.SALES_DATE) YEAR, 
       MONTH(B.SALES_DATE) MONTH, 
       COUNT(DISTINCT(B.USER_ID)) PURCHASED_USERS, 
       ROUND(COUNT(DISTINCT(B.USER_ID))/C.CNT, 1) PUCHASED_RATIO
  FROM USER_INFO A, ONLINE_SALE B, (SELECT COUNT(*) CNT
                                      FROM USER_INFO 
                                     WHERE YEAR(JOINED) = 2021) C
 WHERE 1=1
   AND A.USER_ID = B.USER_ID
   AND YEAR(A.JOINED) = 2021
GROUP BY YEAR(B.SALES_DATE) , MONTH(B.SALES_DATE)
ORDER BY YEAR(B.SALES_DATE) , MONTH(B.SALES_DATE)
;
  • 다른 사람 풀이 보니 이런 풀이도 있었다. FROM에 테이블을 나열하고 WHERE 1=1 을 쓰는 방식이 특이해서 가져옴
  • WHERE 1=1의 사용
    • 아무 의미없는 조건을 넣고 그 아래 AND로 조건을 추가함. 아래와 같이 주석처리해서 디버깅하기 쉬움.
WHERE 1=1
  -- AND A.USER_ID = B.USER_ID
  AND YEAR(A.JOINED) = 2021
'SQL' 카테고리의 다른 글
  • MySQL 풀이 | 지역별로 매출이 가장 높은 매장의 매출 찾기 (난이도 하)
  • MySQL 실습 | Recyclable and Low Fat Products
  • MySQL 실습 | 자동차 대여 기록 별 대여 금액 구하기
  • MySQL 실습 | 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기
초담
초담
4년차 마케터입니다
  • 초담
    그로스마케터의 기록
    초담
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (117)
      • Data Analytics Project (3)
      • SQL (55)
      • Python (43)
      • GA4 (0)
      • Tableau (8)
      • 아티클 스터디 (7)
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
초담
MySQL 실습 | 상품을 구매한 회원 비율 구하기
상단으로

티스토리툴바