코딩테스트/SQL

[SQL] 📍 년, 월, 성별 별 상품 구매 회원 수 구하기

박소민 2025. 6. 10. 16:10
년, 월, 성별 별 상품 구매 회원 수 구하기
 

프로그래머스

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;