본문 바로가기
DATABASE

Q. 활동고객과 비활동고객 파악하기

by nyang2 2023. 11. 18.

비활동고객 기준 : 비구매일 90일 이상인 고객

 

필요 데이터 :

구매일 ➜ orders 테이블의 orderDate 데이터

구매자 ➜ orders 테이블의 customerNumber 데이터

 

 

조회방법

1. 마지막 구매일을 조회한다. 

해석
비구매기간을 알기 위해 기준으로 잡을 날짜를 정해야한다.
때문에 max() 함수를 이용하여 가장 마지막으로 구매한 날짜가 언제인지 파악!

결과 ) 2005-05-31 일이 나오기 때문에 2005-06-01 을 기준으로 파악할 것이다.

 

 

2. 각 고객의 마지막 구매일을 구해준다.

해석
고객별로 마지막 구매일을 구해야하기 때문에 group by 를 이용해 고객을 기준으로 그룹화를 해준다.
그리고 고객들의 마지막 구매일을 구하기 위해 max() 함수를 이용하여 구해준다.

 

 

3. 기준일과 각 고객의 마지막 구매일의 차이를 구해준다.

해석
고객별 마지막 구매일을 구하는 select 절이 끝나야 차이를 구할 수 있기 때문에,
(2) 번의 내용을 서브쿼리로 이용하여
기준일 (2005-06-01)과 각 고객의 마지막 구매일의 차이를 구해준다.

이 때 datediff() 함수를 이용하는데, 이 함수는 인자에 있는 두 날짜값의 차이를 반환해주는 함수이다.
그렇기에 datediff(기준일, 각 고객별 마지막 구매일) 의 방법을 사용한다.

 

 

4. 비구매일이 90일 이상인 고객은 Churn, 아닌 고객은 Non-Churn 으로 구분하여준다.

해석
비구매기간(Diff) 가 있는 select 절이 끝난 후 구분할 수 있기 때문에
(3) 번의 내용을 서브쿼리로 이용해준다.

비활동고객, 활동고객을 구분할 때에는 case-when 문을 사용해준다.

 

 

5. 활동고객과 비활동고객의 수 조회하기

해석
활동고객과 비활동고객 별로 그룹화하고 count() 집계함수를 이용하여 분류별 고객수를 구해준다.