문제:
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
;
'[SQL] 연습' 카테고리의 다른 글
[MySQL] 프로그래머스 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 (0) | 2025.02.02 |
---|---|
[MySQL] 프로그래머스 헤비 유저가 소유한 장소 (0) | 2025.01.29 |
[MySQL] 프로그래머스 우유와 요거트가 담긴 장바구니 (0) | 2025.01.26 |
[MySQL] 프로그래머스 저자 별 카테고리 별 매출액 집계하기 (1) | 2024.12.29 |
[MySQL] 프로그래머스 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 (0) | 2024.12.28 |