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

2023. 3. 20. 14:02DataBase/SQL Query Problem

728x90
반응형
SMALL

년, 월, 성별 별로 그룹핑을 요하는 문제다. 그러나 위의 세가지 조건으로만 그룹핑하면 안된다.

문제에서는 상품구매횟수가 아닌 상품구매회원수를 구하라고 했기 때문에

같은 년, 월에 한 회원이 여러번 구매해도 상품구매회원수는 1이어야 한다.

따라서 user_id 로도 그룹핑을 해야한다. 이렇게 하면 년, 월, 성별, 회원 아이디의 데이터를 만들 수 있다.

 

이제 위에서 구한 테이블을 가지고 년, 월, 성별에 대해 한 번 더 그룹핑을 진행하면

같은 년, 월, 성별을 갖는 회원끼리 그룹핑되므로 같은 년, 월, 성별을 갖는 회원의 수를 알 수 있다.

즉, 년, 월, 성별 별 상품 구매 회원 수를 구할 수 있다.

 


정답

WITH DATA AS (
    SELECT
        YEAR(SALES_DATE) YEAR, MONTH(SALES_DATE) MONTH, UI.GENDER, UI.USER_ID
    FROM
        ONLINE_SALE OS INNER JOIN USER_INFO UI
    ON
        OS.USER_ID = UI.USER_ID
    GROUP BY
        YEAR(SALES_DATE), MONTH(SALES_DATE), UI.GENDER, UI.USER_ID
    HAVING
        UI.GENDER IS NOT NULL
    ORDER BY
        YEAR ASC, MONTH ASC, UI.GENDER ASC
)

SELECT
    YEAR, MONTH, GENDER, COUNT(*) USERS
FROM
    DATA
GROUP BY
    YEAR, MONTH, GENDER
728x90
반응형
LIST