название будет слишком многословным, если я на самом деле пытался втиснуть все это там, но вот что мне нужна помощь ...в красное смещение, как я могу использовать оконные функции, чтобы назначить количество на сегодняшний день предыдущая запись в
Мы пытаемся рассчитать сохранение пользователей. Наши пользователи имеют даты начала и даты назначения, которые могут перекрываться. Мне нужно посмотреть все кандидаты и определить, сохранены ли они (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, я должен был бы отдать удержания в месяц JAN-16' , потому что дата окончания присваивание заканчивается 1-31-16. Для пользователя 4, где совпадения присваиваются, я бы отдал должное удержанию нов-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;
Цените помощь и, пожалуйста, ЛМК, если я урожденная уточнить что-нибудь!
Пожалуйста, поделитесь данными образца и требуемым выходом. –