0
如果我真的試圖塞滿它所有在那裏,但這裏是我需要幫助...在紅移,我怎樣才能使用窗口函數分配一個計數到上一行的日期
我們正在努力計算用戶的保留率。我們的用戶有可能重疊的作業開始日期和作業結束日期。我需要做的是查看所有候選人的任務,並確定他們是否被保留(在上一次結束和新開始之間30天或更短)。棘手的部分:我需要將保留信用分配給以前的分配結束日期。這裏的數據的預覽:
month | user_id | start_date | end_date | rank | days_btw_assignment
1 5 1-1-16 1-31-16 1 NULL
2 5 2-14-16 4-15-16 2 15
6 4 6-01-16 11-01-16 1 NULL
8 4 8-01-16 11-01-16 2 -81
因此,對於用戶5,我需要,因爲他們的任務結束日期爲止16年1月31日給滯留的信貸一月至16' 月。對於用戶4,如果任務重疊,我會給予nov-16的保留權,因爲他們以前的任務結束日期將於11-01-16結束。
我已經限制了這個例子使用的情況下,他們只有2個任務,但是,可能會有更多。我只需要朝正確的方向邁出一步,我可以自己處理所有其他用例。
這裏是我目前使用的示例代碼:
with placement_facts as (select date_trunc('month',assignment_start_date) as month, user_id, assignment_start_date, assignment_end_date, rank() over (partition by user_id order by assignment_start_date asc), extract(day from assignment_start_date - lag(assignment_end_date, 1) over (partition by user_id order by assignment_start_date asc)) as time_btw_placement
from activations as ca
join offers on ca.offer_id = offers.id
where assignment_start_date != assignment_end_date
order by 2,4 asc)
select placement_facts.month, count(distinct case when time_btw_placement <=30 then user_id else null end) as retained_raw
from placement_facts
group by 1;
欣賞的幫助,並請LMK如果我的東東澄清什麼!
請分享樣品數據和需求輸出.. –