inblog logo
|
stupefyee
    SQL문제풀기

    [SQL 문제 풀이] 상품을 구매한 회원 비율 구하기

    프로그래머스 (131534)
    Stupefyee's avatar
    Stupefyee
    Mar 13, 2025
    [SQL 문제 풀이] 상품을 구매한 회원 비율 구하기
    Contents
    내가 작성한 쿼리
    school.programmers.co.kr
    https://school.programmers.co.kr/learn/courses/30/lessons/131534?language=oracle
    notion image
    notion image
     

    내가 작성한 쿼리

    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
    Contents
    내가 작성한 쿼리

    stupefyee

    RSS·Powered by Inblog