我想根据给定的交易表来计算每日客户流失率。我们将客户流失定义为在21天内未进行任何交易的广告客户
表1:收入(transaction_date,ad_id,收入)
表2:广告客户(ad_id,advertiser_id)
我采用了一种方法,其中我使用row_number()来获得广告客户的后续交易(与之前的交易相邻)并计算差额;我的思考过程是使用它来了解客户是否流失。但是我们需要计算每日用户流失率。...
WITH date_rank as
(
SELECT
date(transaction_date) as transaction_date,
ad_id,
advertiser_id,
row_number() over(partition by advertiser_id order by transaction_date asc) as rn
FROM ad_revenue ar
JOIN advertisers a on ar.ad_id = a.ad_id
),
date_diff as
(
SELECT
dr1.transaction_date as first_date,
dr2.transaction_date as next_date,
datediff(day, dr1.transaction_date, dr2.transaction_date) as date_diff,
dr1.ad_id,
advertiser_id
FROM date_rank dr1
JOIN date_rank dr2 on dr1.advertiser_id = dr2.advertiser_id AND dr1.rn = dr2.rn + 1
)
我不确定我是否在正确的轨道上……在这个轨道上有点卡住。
我们最终希望我们的输出保持在每日水平,我们的transaction_date列以及该日期搅拌的广告客户数量的另一列(即,如果我的上次transaction_date是7/1,那么我的客户流失日期是7/22,即使我的下一笔交易是7/23)