2024년 01월 17일
SELECT YEAR(ONLINE_SALE.SALES_DATE) as YEAR, MONTH(ONLINE_SALE.SALES_DATE) as MONTH,
USER_INFO.GENDER as GENDER, COUNT(DISTINCT ONLINE_SALE.USER_ID) as USERS
FROM ONLINE_SALE
JOIN USER_INFO ON ONLINE_SALE.USER_ID = USER_INFO.USER_ID
WHERE GENDER IS NOT NULL
GROUP BY YEAR, MONTH, GENDER
ORDER BY YEAR, MONTH, GENDER
1~2행에서 필요한 테이블의 컬럼을 조회하는데 이 때 두 테이블의 컬럼을 조회하기 때문에 3행에서 JOIN을 통해 두 테이블을 묶어주었다.
1~2행에서 필요한 테이블의 컬럼을 조회하는데 년, 월, 성별별로 나누어 조회해야하기 때문에 날짜 관련 함수를 사용하였다. 날짜 관련 함수 YEAR, MONTH 등을 통해 0000-00-00 형식의 데이터에서 년과 월을 추출해주었다. 또한 년, 월, 성별별로 구매한 회원을 추출해내야하기 때문에 동일한 유저의 중복을 제거하기 위해서 DISTINCT 절을 활용하여 중복 데이터 제거 후 COUNT를 통해 년, 월, 성별별로 구매한 회원의 수를 집계하였다.
4행에서 성별을 가지고 있지 않은 행을 제외시켰다.
5행에서 년, 월, 성별별로 그루핑을 하였다. 즉 년, 월, 성별이 모두 같은 데이터를 집계하기 위해서 그루핑한 것이다. 만약 그루핑 하지 않는다면 년, 월은 마지막 행의 데이터의 값을 가지게 되고 하나의 행으로 표현될 것이다.
그루핑 O
그루핑 X
6행에서 ORDER BY를 통해 년, 월, 성별 순으로 오름차순 정렬해주었다.
날짜 관련 함수
JOIN