USER_INFO 테이블과 ONLINE_SALE 테이블에서 년, 월, 성별 별로 상품을 구매한 회원수를 집계하는 SQL문을 작성해주세요. 결과는 년, 월, 성별을 기준으로 오름차순 정렬해주세요. 이때, 성별 정보가 없는 경우 결과에서 제외해주세요.
https://school.programmers.co.kr/learn/courses/30/lessons/131532
SELECT
YEAR(SALES_DATE) YEAR,
MONTH(SALES_DATE) MONTH,
GENDER,
COUNT(*) USERS
FROM
USER_INFO ui
INNER JOIN
ONLINE_SALE os
ON
ui.USER_ID = os.USER_ID
WHERE
GENDER IS NOT NULL -- 성별 정보 없는 경우 제외
GROUP BY
YEAR(SALES_DATE), MONTH(SALES_DATE), GENDER -- 문제에서 요구한 년, 월, 성별을 그룹화
ORDER BY
YEAR(SALES_DATE), MONTH(SALES_DATE), GENDER
SELECT
YEAR(SALES_DATE) YEAR,
MONTH(SALES_DATE) MONTH,
GENDER,
COUNT(DISTINCT os.USER_ID) USERS -- ID가 중복인 값이 존재한다. 대신 동일한 날짜는 아니라서 카운트가 된다.
FROM
USER_INFO ui
INNER JOIN
ONLINE_SALE os
ON
ui.USER_ID = os.USER_ID
WHERE
GENDER IS NOT NULL -- 성별 정보 없는 경우 제외
GROUP BY
-- 문제에서 요구한 년, 월, 성별 그룹화
YEAR(SALES_DATE), MONTH(SALES_DATE), GENDER
ORDER BY
YEAR(SALES_DATE), MONTH(SALES_DATE), GENDER