첫 구매와 최근 구매주기에 대한 컬럼이 없는 상황에서 재구매 주기를 SQL 커리를 통해 계산해보았다.
보통의 구매주기는 최근 구매 - 첫 구매를 통해 계산을 많이하는 것을 보았는데 이런 경우
중간의 구매들에 대해 계산되지 않아 구매 주기를 계산하는데 적합한가라는 생각이 들었다.
테이블에서 customer_id, order_date 열을 통해 계산했다.
결과

여기서 null값을 제거해준다.
case when에서 else값을 반환하지 않는 방법이 있으면 더 깔끔했을텐데 다음에 더 알아봐야겠다.
코드
select customer_id
,lead(customer_id) over (ORDER BY customer_id, order_date) as next
,order_date
,CASE WHEN customer_id = lead(customer_id) over (ORDER BY customer_id, order_date) THEN datediff(lead(order_date) over (ORDER BY customer_id, order_date) , order_date) ELSE null END as re
from superstore
where order_date BETWEEN '2018-01-01%' AND '2018-12-31'
group by customer_id, order_date
order by customer_id, order_date