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

kiki·2024년 1월 10일
0

프로그래머스

목록 보기
54/79

문제 링크

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

문제 설명

  • 년, 월, 성별 별로 상품을 구매한 회원수를 집계하는 SQL문을 작성
  • 년, 월, 성별을 기준으로 오름차순 정렬
  • 성별 정보가 없는 경우 결과에서 제외

N차 시도 - 통과

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

문제 그대로 년, 월, 성별로 그룹화 하고 회원 수를 COUNT하면 된다.
근데 여기서 중요한건 COUNT 시 중복되는 USER_ID는 제외해줘야한다는 것이다. 그래서 COUNT(DISTINCT SALE.USER_ID)와 같이 작성해야한다.

정리

  • COUNT 중복 제외: COUNT는 열의 갯수를 반환한다. COUNT(*)는 NULL을 포함한 열의 갯수를 반환하고 COUNT(필드)는 해당 필드의 NULL이 아닌 값의 갯수를 반환한다. 만약 필드 내 중복되는 값이 있어도 모두 COUNT하기 때문에 중복을 제외하려면 COUNT(DISTINCT 필드)와 같이 사용해야한다.

0개의 댓글