SQL/GROUP BY

[프로그래머스 SQL] Lv.4 - 년,월,성별 별 상품 구매 회원 수 구하기

이런개발 2025. 4. 1. 10:37

https://school.programmers.co.kr/learn/courses/30/lessons/131532

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

문제 풀이

  1. USER_INFO 테이블과 ONLINE_SALE 테이블을 조인한다.
  2. IN NOT NULL 키워드로 성별 정보가 있는 행만 필터링한다.
  3. 년, 월, 성별을 기준으로 그룹핑한다.
  4. 년, 월, 성별을 조회한다. 그리고 COUNT 키워드로 그룹핑된 회원 수를 조회한다. 이때 하나의 회원을 중복 계산하는 것을 방지하기 위해 DISTINCT 키워드로 중복을 제거한다.
  5. 년, 월, 성별을 기준으로 오름차순 정렬한다.
SELECT 
    YEAR(B.SALES_DATE) AS YEAR,
    MONTH(B.SALES_DATE) AS MONTH,
    A.GENDER,
    COUNT(DISTINCT(B.USER_ID)) AS USERS
FROM
    USER_INFO A
        JOIN ONLINE_SALE B ON A.USER_ID = B.USER_ID
WHERE   
    A.GENDER IS NOT NULL
GROUP BY
    1, 2, 3
ORDER BY
    1, 2, 3