[프로그래머스 ORACLE SQL]상품을 구매한 회원 비율 구하기★INNER JOIN★DISTINCT
2023. 6. 23. 14:57
728x90
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/131534
1. USER_INFO 테이블 ==> USER_ID , JOINED(년, 월)
SELECT USER_ID , JOINED ,TO_CHAR(JOINED, 'YYYY') AS YEAR, TO_CHAR(JOINED , 'MM') AS MONTH FROM USER_INFO
WHERE TO_CHAR(JOINED, 'YYYY') = 2021
2. 2021년 가입한 회원 수 ==> 중복 제거하기
SELECT COUNT(DISTINCT(USER_ID)) AS COUNT_2021 FROM USER_INFO
GROUP BY TO_CHAR(JOINED ,'YYYY')
HAVING TO_CHAR(JOINED ,'YYYY') = 2021
3. 상품을 구매한 회원(자료가 2022년 만 있다)
SELECT DISTINCT(USER_ID) , TO_CHAR(SALES_DATE , 'YYYY') AS YEAR , TO_CHAR(SALES_DATE , 'MM') AS MONTH
FROM ONLINE_SALE
4. 2021년 가입한 회원 USER_ID 와 2021년에 가입한 회원 중 상품을 구매한 회원 JOIN
SELECT A.USER_ID , B.YEAR , B.MONTH FROM
(SELECT USER_ID , JOINED ,TO_CHAR(JOINED, 'YYYY') AS YEAR, TO_CHAR(JOINED , 'MM') AS MONTH FROM USER_INFO
WHERE TO_CHAR(JOINED, 'YYYY') = 2021) A INNER JOIN
(SELECT DISTINCT(USER_ID) , TO_CHAR(SALES_DATE , 'YYYY') AS YEAR , TO_CHAR(SALES_DATE , 'MM') AS MONTH FROM ONLINE_SALE) B
ON A.USER_ID = B.USER_ID
==> 2번이 A , 3번이 B ==> INNER JOIN'
5. 최종
SELECT YEAR, TO_NUMBER(MONTH), COUNT(*) AS PURCHASED_USERS , ROUND(COUNT(*)/(SELECT COUNT(DISTINCT(USER_ID)) AS COUNT_2021 FROM USER_INFO
GROUP BY TO_CHAR(JOINED ,'YYYY')
HAVING TO_CHAR(JOINED ,'YYYY') = 2021),1) AS PURCHASED_RATIO FROM (
SELECT A.USER_ID , B.YEAR , B.MONTH FROM
(SELECT USER_ID , JOINED ,TO_CHAR(JOINED, 'YYYY') AS YEAR, TO_CHAR(JOINED , 'MM') AS MONTH FROM USER_INFO
WHERE TO_CHAR(JOINED, 'YYYY') = 2021) A INNER JOIN
(SELECT DISTINCT(USER_ID) , TO_CHAR(SALES_DATE , 'YYYY') AS YEAR , TO_CHAR(SALES_DATE , 'MM') AS MONTH FROM ONLINE_SALE) B
ON A.USER_ID = B.USER_ID)
GROUP BY YEAR, MONTH
ORDER BY YEAR ASC , MONTH ASC
728x90
반응형
'SQL > JOIN' 카테고리의 다른 글
[프로그래머스 ORACLE SQL]보호소에서 중성화한 동물★LIKE (0) | 2023.06.22 |
---|---|
[프로그래머스 ORACLE SQL]5월 식품들의 총매출 조회하기★INNER JOIN (0) | 2023.06.22 |
[프로그래머스 ORACLE SQL]조건에 맞는 도서와 저자 리스트 출력하기★TO_CHAR() (0) | 2023.06.22 |
[프로그래머스 ORACLE SQL]오랜 기간 보호한 동물(1)★FETCH_상위 N개 레코드★FULL OUTER JOIN (0) | 2023.06.22 |
[프로그래머스 ORACLE SQL]상품 별 오프라인 매출 구하기★어디로 조인할지 차근 차근 생각★ (0) | 2023.06.22 |