🤔 문제 분석
1) USER_INFO 테이블과 ONLINE_SALE 테이블에서
2) 2021년에 가입한 전체 회원들 중
3) 상품을 구매한 회원수와
4) 상품을 구매한 회원의 비율(=2021년에 가입한 회원 중 상품을 구매한 회원수 / 2021년에 가입한 전체 회원 수)을
5) 년, 월 별로 출력하는 SQL문을 작성해주세요.
6) 상품을 구매한 회원의 비율은 소수점 두번째자리에서 반올림하고,
7) 전체 결과는 년을 기준으로 오름차순 정렬해주시고 년이 같다면 월을 기준으로 오름차순 정렬해주세요.
💡 풀이
SELECT YEAR(sale.SALES_DATE) AS YEAR, MONTH(sale.SALES_DATE) AS MONTH
, COUNT(DISTINCT sale.USER_ID) AS PURCHASED_USERS
, ROUND(COUNT(DISTINCT sale.USER_ID) /
(SELECT COUNT(USER_ID)
FROM USER_INFO
WHERE YEAR(JOINED) = 2021), 1) AS PUCHASED_RATIO
FROM USER_INFO AS info
JOIN ONLINE_SALE AS sale On info.USER_ID = sale.USER_ID
WHERE YEAR(info.JOINED) = 2021
GROUP BY YEAR, MONTH
ORDER BY YEAR, MONTH
✍️ POINT
SELECT문에서 연산할 때
연산할 값의 분모 등에 SELECT문을 사용할 수 있다.
'코딩테스트 > 프로그래머스 SQL' 카테고리의 다른 글
[String, Date] 49. 조건별로 분류하여 주문상태 출력하기 (LV. 3) (0) | 2022.11.28 |
---|---|
[String, Date] 48. 취소되지 않은 진료 예약 조회하기 (LV. 4) (0) | 2022.11.28 |
[JOIN] 46. 상품 별 오프라인 매출 구하기 (LV. 2) (0) | 2022.11.26 |
[JOIN] 45. 보호소에서 중성화한 동물 (LV. 4) (0) | 2022.11.26 |
[JOIN] 44. 오랜 기간 보호한 동물(1) (LV. 3) (0) | 2022.11.26 |
댓글