프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 설계
1. 두 테이블을 조인해 준다. USER_ID를 이용, 전체 2021년 가입자는 서브쿼리로 따로 구해줄 것임
2. WHERE 조건으로 2021 가입자 설정
3. 가입 년, 월이 아니라 구매 년, 월 기준으로 SELECT 및 그룹화
4. 같은 년 같은 월에 같은 사람이 여러 개 사는 경우가 있으므로 DISTINCT 이용
5. 서브 쿼리 이용해서 2021년 가입자 구하기
문제 풀이
-- 코드를 입력하세요
SELECT YEAR(S.SALES_DATE) AS YEAR,
MONTH(S.SALES_DATE) AS MONTH,
COUNT(DISTINCT S.USER_ID) AS PURCHASED_USERS,
ROUND(COUNT(DISTINCT S.USER_ID)/(SELECT COUNT(*) FROM USER_INFO WHERE JOINED LIKE '2021%'),1) AS PUCHASED_RATIO
FROM USER_INFO I INNER JOIN ONLINE_SALE S ON I.USER_ID=S.USER_ID
WHERE I.JOINED LIKE '2021%'
GROUP BY YEAR,MONTH
ORDER BY YEAR,MONTH;
'코딩테스트 > SQL' 카테고리의 다른 글
[프로그래머스 LV5][SQL] 멸종위기의 대장균 찾기 (0) | 2025.05.01 |
---|---|
[프로그래머스 LV4][SQL] FrontEnd 개발자 찾기 (0) | 2025.04.24 |
[프로그래머스 LV4][SQL] 자동차 대여 기록 별 대여 금액 구하기 (0) | 2025.04.19 |
[프로그래머스 LV4][SQL] 오프라인/온라인 판매 데이터 통합하기 (0) | 2025.04.17 |
[프로그래머스 LV4][SQL] 입양 시각 구하기(2) (0) | 2025.04.17 |