본문 바로가기

알고리즘 공부 및 문제 풀이/프로그래머스(PRO)

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

[문제]

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

[풀이]

1. 년, 월, 성별로 GROUP BY 하여 집계. GENDER가 NULL인 경우 제외.

2. 주의할 점은 같은 회원이 서로 다른 아이템을 동일한 년, 월에 구매할 경우 중복 집계로 처리 되어야 한다. 따라서 COUNT 시에 DISTINCT(U.USER_ID) 가 필수적임에 주의!

 

[코드]

 

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