[SQL] 프로그래머스 SQL 고득점 Kit_GROUP BY (21/24)

餘園·2025년 7월 31일

SQL 고득점 Kit

목록 보기
72/109
post-thumbnail

년, 월, 성별 별 상품 구매 회원 수 구하기 (Level 4)

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

solve

SELECT YEAR(s.SALES_DATE) AS YEAR, 
    MONTH(s.SALES_DATE) AS MONTH, 
    u.GENDER, COUNT(*) AS USERS
    FROM ONLINE_SALE s
    JOIN USER_INFO u ON s.USER_ID = u.USER_ID
    GROUP BY YEAR, MONTH, u.GENDER
    HAVING GENDER IS NOT NULL
    ORDER BY YEAR, MONTH, u.GENDER
  • COUNT(*)는 구매 건수(레코드 수)를 센다
    • 즉, 한 사람이 한 달에 3번 구매했다면 USERS는 3으로 증가
SELECT YEAR(s.SALES_DATE) AS YEAR, 
    MONTH(s.SALES_DATE) AS MONTH, 
    u.GENDER, COUNT(DISTINCT u.USER_ID) AS USERS
    FROM ONLINE_SALE s
    JOIN USER_INFO u ON s.USER_ID = u.USER_ID
    GROUP BY YEAR, MONTH, u.GENDER
    HAVING GENDER IS NOT NULL
    ORDER BY YEAR, MONTH, u.GENDER
  • 해당 월에 중복 없이 구매한 고유한 사용자 수를 센다
    • 즉, 어떤 여성이 5월에 3번 구매해도 1명으로 집계
profile
What else can I do

0개의 댓글