년, 월, 성별 별 상품 구매 회원 수 구하기
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
- 내 풀이
- 같은 년,월에 여러 개를 구매한 유저가 있을 수 있음
- → USER_ID별로 먼저 그룹핑이 되어있어야함
- 같은 년,월에 여러 개를 구매한 유저가 있을 수 있음
SELECT YEAR, MONTH, GENDER, COUNT(*) AS USERS
FROM USER_INFO U
JOIN (SELECT USER_ID, YEAR(SALES_DATE) AS YEAR, MONTH(SALES_DATE) AS MONTH
FROM ONLINE_SALE
GROUP BY 1,2,3) AS O
ON O.USER_ID=U.USER_ID
WHERE GENDER IS NOT NULL
GROUP BY 1,2,3
ORDER BY 1,2,3
- 다른 사람 풀이
- SELECT 문에서 COUNT할 때 DISTINCT로 바로 중복 제거할 수 있음
SELECT YEAR(SALES_DATE) AS YEAR,
MONTH(SALES_DATE) AS MONTH,
GENDER,
COUNT(DISTINCT ONLINE_SALE.USER_ID) AS USERS
FROM ONLINE_SALE
INNER JOIN USER_INFO ON USER_INFO.USER_ID = ONLINE_SALE.USER_ID
WHERE GENDER IS NOT NULL
GROUP BY YEAR, MONTH, GENDER
ORDER BY YEAR, MONTH, GENDER;
'코딩테스트 > SQL' 카테고리의 다른 글
| [SQL][DISTINCT][SELF_JOIN] 📍우유와 요거트가 담긴 장바구니 (0) | 2025.06.10 |
|---|---|
| [SQL][ROUND] 서울에 위치한 식당 목록 출력하기 (0) | 2025.06.10 |
| [SQL][GROUP BY] 📍 저자 별 카테고리 별 매출액 집계하기 (0) | 2025.06.09 |
| [SQL] 취소되지 않은 진료 예약 조회하기 (0) | 2025.06.09 |
| [SQL] 5월 식품들의 총매출 조회하기 (0) | 2025.06.09 |