일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- Level2
- mysql
- join
- 완전탐색
- 프로그래머스
- 조합
- programmers
- itertools
- python
- 시간복잡도
- 연습문제
- Queue
- import re
- Stack
- collections
- 코테
- time complexity
- 코딩테스트
- cte
- BFS
- coding test
- coding
- 코딩
- sql
- counter
- lambda
- level4
- lv4
- 데이터분석
- 파이썬
- Today
- Total
ror_coding
[Programmers Lv.5] 상품을 구매한 회원 비율 구하기 - 131534 본문
728x90
Question
USER_INFO 테이블과 ONLINE_SALE 테이블에서 2021년에 가입한 전체 회원들 중 상품을 구매한 회원수와 상품을 구매한 회원의 비율(=2021년에 가입한 회원 중 상품을 구매한 회원수 / 2021년에 가입한 전체 회원 수)을 년, 월 별로 출력하는 SQL문을 작성해주세요.
상품을 구매한 회원의 비율은 소수점 두번째자리에서 반올림하고, 전체 결과는 년을 기준으로 오름차순 정렬해주시고 년이 같다면 월을 기준으로 오름차순 정렬해주세요.
Code (After)
WITH USER_2021 AS(
SELECT *, COUNT(USER_ID) OVER() AS TOTAL
FROM USER_INFO
WHERE YEAR(JOINED) = 2021
)
SELECT
YEAR(SALES_DATE) AS YEAR
, MONTH(SALES_DATE) AS MONTH
, COUNT(DISTINCT U.USER_ID) AS PURCHASED_USERS
, ROUND(COUNT(DISTINCT U.USER_ID)/TOTAL, 1) AS PUCHASED_RATIO
FROM USER_2021 U JOIN ONLINE_SALE S ON U.USER_ID = S.USER_ID
GROUP BY 1, 2
ORDER BY 1, 2
Code (Before)
SELECT YEAR(SALES_DATE) AS YEAR,
MONTH(SALES_DATE) AS MONTH,
COUNT(DISTINCT U.USER_ID) AS PURCHASED_USERS,
ROUND(COUNT(DISTINCT U.USER_ID)/(SELECT COUNT(DISTINCT USER_ID) FROM USER_INFO WHERE YEAR(JOINED) = 2021), 1) AS PUCHASED_RATIO
FROM USER_INFO U JOIN ONLINE_SALE S
ON U.USER_ID = S.USER_ID
WHERE YEAR(JOINED) = 2021
GROUP BY 1, 2
ORDER BY 1, 2

now me
On my github
728x90
'Algorithm > SQL' 카테고리의 다른 글
[HackerRank] Occupations (0) | 2025.04.05 |
---|---|
[Programmers Lv.5] 멸종위기의 대장균 찾기 - 301651 (0) | 2025.01.16 |
[Programmers Lv.4] 언어별 개발자 분류하기 - 276036 (0) | 2025.01.12 |
[Programmers Lv.4] 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 - 157339 (0) | 2025.01.12 |
[Programmers Lv.4] FrontEnd 개발자 찾기 - 276035 (0) | 2025.01.12 |