728x90
문제
USER_INFO 테이블과 ONLINE_SALE 테이블에서 년, 월, 성별 별로 상품을 구매한 회원수를 집계하는 SQL문을 작성해주세요. 결과는 년, 월, 성별을 기준으로 오름차순 정렬해주세요. 이때, 성별 정보가 없는 경우 결과에서 제외해주세요.
풀이
SELECT YEAR(SALES_DATE) YEAR
, MONTH(SALES_DATE) MONTH
, U.GENDER
, COUNT(DISTINCT U.USER_ID) USERS -- 상품을 구매한 회원수를 집계(중복 제거)
FROM USER_INFO U
INNER JOIN ONLINE_SALE O
ON U.USER_ID = O.USER_ID
WHERE U.GENDER IS NOT NULL -- 성별 정보가 없는 경우 결과에서 제외
GROUP BY YEAR(SALES_DATE)
, MONTH(SALES_DATE)
, U.GENDER
ORDER BY YEAR -- 년, 월, 성별을 기준으로 오름차순 정렬
, MONTH
, U.GENDER
중복 데이터를 제거하기 위해 COUNT(DISTINCT, 칼럼명)를 썼다.
728x90
'IT > SQL' 카테고리의 다른 글
[MySQL] 프로그래머스 GROUP BY 16 가격대별 상품 개수 구하기 (0) | 2023.10.01 |
---|---|
[MySQL] 프로그래머스 GROUP BY 15 입양 시각 구하기(2) (0) | 2023.10.01 |
[MySQL] 프로그래머스 GROUP BY 13 입양 시각 구하기(1) (0) | 2023.10.01 |
[MySQL] 프로그래머스 GROUP BY 12 동명 동물 수 찾기 (0) | 2023.10.01 |
[MySQL] 프로그래머스 GROUP BY 11 고양이와 개는 몇 마리 있을까 (0) | 2023.10.01 |