PRACTICE/SQL

[MySQL] 4단계 7. 년, 월, 성별 별 상품 구매 회원 수 구하기

j1ngerhead 2025. 2. 2. 00:06

 

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/131532

SELECT 
    YEAR(B.SALES_DATE) AS YEAR,
    MONTH(B.SALES_DATE) AS MONTH,
    A.GENDER, 
    COUNT(DISTINCT B.USER_ID) AS USERS
FROM USER_INFO A
JOIN ONLINE_SALE B
    ON A.USER_ID = B.USER_ID
WHERE A.GENDER IS NOT NULL
GROUP BY YEAR(B.SALES_DATE), MONTH(B.SALES_DATE), A.GENDER
ORDER BY YEAR(B.SALES_DATE), MONTH(B.SALES_DATE), A.GENDER;


GROUP BY 절에서 YEAR와 MONTH는 직접 계산된 값이기 때문에 계산된 컬럼의 별칭을 사용할 수 없다. 
대신 YEAR(B.SALES_DATE)와 MONTH(B.SALES_DATE)로 지정해 주어야 한다.

 

COUNT(DISTINCT B.USER_ID): 중복된 USER_ID가 여러 건일 경우 
고유한 사용자 수를 정확히 세기 위해 DISTINCT 키워드를 추가한다.

320x100