[SQL] 연습

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

Simon Yoon 2025. 1. 28. 21:43

문제:

USER_INFO 테이블과 ONLINE_SALE 테이블에서 년, 월, 성별 별로 상품을 구매한 회원수를 집계
- 결과는 년, 월, 성별을 기준으로 오름차순 정렬
- 성별 정보가 없는 경우 결과에서 제외

해결방법:

1. 유저 테이블과 판매내역 테이블을 INNER JOIN

2. SALES_DATE 컬럼에서 YEAR와 MONTH 를 추출

3. SELECT 절에서 COUNT DISTINCT 와 GROUP BY 를 사용하여 USER_ID 를 카운트

4. WHERE 조건으로 성별이 NULL 값이 아닌 경우만 사용하도록 함

 

예시 코드:

SELECT YEAR(SALES_DATE) YEAR, MONTH(SALES_DATE) MONTH, GENDER, COUNT(DISTINCT USER_ID) USERS
FROM
(
SELECT T1.USER_ID, T1.SALES_DATE, T2.GENDER
FROM ONLINE_SALE T1
INNER JOIN USER_INFO T2
ON T1.USER_ID = T2.USER_ID
) T3
WHERE GENDER IS NOT NULL
GROUP BY YEAR, MONTH, GENDER
ORDER BY YEAR, MONTH, GENDER
;