년, 월, 성별 별 상품 구매 회원 수 구하기

수이·2025년 4월 1일
0

🟢 코드카타 / SQL

목록 보기
60/84
post-thumbnail

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

조건정리

  1. 년, 월, 성별 별 상품 구매 회원수
  2. 년, 월, 성별 기준 오름차순 정렬
  3. 성별 정보가 없는 경우 제외

풀이

  1. join > inner join (두 테이블 다 정보 필요)
  2. 필요 컬럼
    sales_date, gender, user_id
SELECT DATE_FORMAT(sales_date,'%Y') AS YEAR,
       DATE_FORMAT(sales_date, '%m') AS MONTH,
       u.GENDER,
       COUNT(DISTINCT o.user_id) AS USERS
FROM user_info u
INNER JOIN online_sale o
ON u.user_id = o.user_id
WHERE gender IS NOT NULL
GROUP BY 1,2,3
ORDER BY 1,2,3

다른사람 풀이

SELECT 
    YEAR(S.SALES_DATE) AS YEAR,
    MONTH(S.SALES_DATE) AS MONTH,
    U.GENDER,
    COUNT(DISTINCT S.USER_ID) AS USERS
FROM ONLINE_SALE S JOIN USER_INFO U ON S.USER_ID = U.USER_ID
WHERE U.GENDER IS NOT NULL
GROUP BY 1,2,3
ORDER BY 1,2,3

다른 건 다 똑같은데 YEAR, MONTH 함수 사용에서 차이가 난다

DATE_FORMAT은 01
YEAR은 1

문제 원래 의도라면 DATE_FORMAT보다는 정수형으로 반환되는 게 더 적합한 방식인듯

0개의 댓글

관련 채용 정보