Contents
내가 작성한 쿼리

내가 작성한 쿼리
Oracle
-- 1. 온라인 판매 테이블(OS)에서 판매 날짜의 연도(YEAR)와 월(MONTH)을 추출
SELECT
EXTRACT(YEAR FROM OS.SALES_DATE) AS YEAR, -- 판매 날짜의 연도 추출 (오라클 방식)
EXTRACT(MONTH FROM OS.SALES_DATE) AS MONTH, -- 판매 날짜의 월 추출 (오라클 방식)
-- 2. 2021년에 가입한 회원 중 실제 구매한 회원 수를 세기 (중복 제거)
COUNT(DISTINCT OS.USER_ID) AS PURCHASED_USERS,
-- 3. 구매한 회원 수를 2021년에 가입한 전체 회원 수로 나눠 비율 계산, 소수점 첫째 자리 반올림
ROUND(
(COUNT(DISTINCT OS.USER_ID) /
(SELECT COUNT(*) FROM USER_INFO WHERE EXTRACT(YEAR FROM JOINED) = 2021)),
1
) AS PURCHASED_RATIO
-- 4. 사용할 테이블: ONLINE_SALE 별칭(OS)
FROM
ONLINE_SALE OS
-- 5. 2021년에 가입한 회원(USER_INFO 테이블 기준)에 해당하는 USER_ID만 추출
WHERE
OS.USER_ID IN (SELECT USER_ID FROM USER_INFO WHERE EXTRACT(YEAR FROM JOINED) = 2021)
-- 6. 연도, 월별 그룹화
GROUP BY
EXTRACT(YEAR FROM OS.SALES_DATE),
EXTRACT(MONTH FROM OS.SALES_DATE)
-- 7. 연도, 월 오름차순 정렬
ORDER BY
YEAR,
MONTH;
MySQL
-- 1. 온라인 판매 테이블(OS)에서 판매 날짜의 연도(YEAR)와 월(MONTH)을 추출
SELECT
YEAR(OS.SALES_DATE) YEAR, -- 판매 날짜의 연도 추출
MONTH(OS.SALES_DATE) MONTH, -- 판매 날짜의 월 추출
-- 2. 2021년에 가입한 회원 중 실제 구매한 회원 수를 세기 (중복 제거)
COUNT(DISTINCT OS.USER_ID) PURCHASED_USERS,
-- 3. 구매한 회원 수를 2021년에 가입한 전체 회원 수로 나눠 비율 계산, 소수점 첫째 자리 반올림
ROUND(
(COUNT(DISTINCT OS.USER_ID) /
(SELECT COUNT(*) FROM USER_INFO WHERE YEAR(JOINED) = 2021)),
1
) PURCHASED_RATIO
-- 4. 사용할 테이블: ONLINE_SALE 별칭(OS)
FROM
ONLINE_SALE OS
-- 5. 2021년에 가입한 회원(USER_INFO 테이블 기준)에 해당하는 USER_ID만 추출
WHERE
OS.USER_ID IN (SELECT USER_ID FROM USER_INFO WHERE YEAR(JOINED) = 2021)
-- 6. 연도, 월별 그룹화
GROUP BY
YEAR,
MONTH
-- 7. 연도, 월 오름차순 정렬
ORDER BY
YEAR,
MONTH;
차이점
- 오라클에서는
YEAR()
,MONTH()
함수가 없고,EXTRACT()
함수를 사용하여 추출
Share article