У меня есть таблица с 4 столбцами: date, event_name, video_id и user_id.
Мне нужно написать запрос, который будет возвращать количество пользователей, просмотревших хотя бы одно видео в данный день, и Количество тех пользователей, которые вернулись на следующий день, чтобы посмотреть хотя бы одно видео. Событие video_play означает, что видео было воспроизведено пользователем.
Вот некоторые примеры данных, на которых мне нужно основать свой запрос:
date event_name video_id user_id
2018-01-01 video_play 51651561651 989189198
2018-01-01 video_play 98121651656 561884864
2018-01-01 video_play 78918918918 561884864
2018-01-01 create_video 32156541355 153215651
2018-01-01 create_video 87351531311 232135135
2018-01-02 create_video 51651561651 489846581
2018-01-02 video_play 12315315352 561884864
2018-01-02 create_video 32156541355 321351351
2018-01-02 create_video 87351531311 231513515
2018-01-02 video_play 98191891894 615616516
Вот так должен выглядеть вывод:
date users_view_videos users_view_next_day
2018-01-01 2 1
2018-01-02 2 0
Этот запрос завершает первую половину задачи запроса, но я не могу понять вторую половину:
with t1 as
(select date,
count(distinct user_id) as users_view_next_day
from clickstream_videos
WHERE event_name = 'video_play'
group by 1)
select clickstream_videos.date,
count(distinct user_id) as users_view_videos,
lead(users_view_next_day, 1) over(order by clickstream_videos.date)
from clickstream_videos
join t1
on clickstream_videos.date = t1.date
WHERE event_name = 'video_play'
group by 1, t1.users_view_next_day
Спасибо.