본문 바로가기

프로그래머스 풀이/Lv 4

[프로그래머스 SQL] 년 월 성별 별 상품 구매 회원 수 구하기 ORACLE

728x90

https://school.programmers.co.kr/learn/courses/30/lessons/131532?language=oracle

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

2025년 1월 남자는 N명,

2025년 1월 여자는 M명 

이런식으로 쿼리를 짜야하는 문제다.

 

먼저 필요한 정보를 추출한다. 조인으로 user_id 가 같은 것을 뽑자.

그리고 년도, 월, 성별로 그룹화하고 user_id를 카운팅하면 되는 문제다. 하지만 주의해야할 점이 중복된 데이터이다. 왜냐하면 A라는 사람이 1월달에 두번 물건을 구매했을 수도 있기 때문이다. 그래서 중복을 제거하는 DISTINCT 함수를 함께 사용해준다.

 

-- 코드를 입력하세요
SELECT 
    TO_CHAR(o.sales_date,'YYYY') AS YEAR, 
    TO_NUMBER(TO_CHAR(o.sales_date,'MM')) AS MONTH,
    u.gender AS GENDER,
    COUNT(DISTINCT u.user_id) as USERS
FROM USER_INFO u, ONLINE_SALE o
WHERE u.user_id = o.user_id 
AND u.GENDER IS NOT NULL
GROUP BY TO_CHAR(o.sales_date,'YYYY'), TO_CHAR(o.sales_date,'MM'), u.gender
ORDER BY TO_CHAR(o.sales_date,'YYYY'), TO_CHAR(o.sales_date,'MM'), u.gender;