SQL: first_value (), получение min_date для видео - PullRequest
0 голосов
/ 24 января 2020

Счастливая пятница:

У меня есть столбец с именем view_date. Минимальное значение этой даты - это дата, когда видео было впервые помещено в указанный список воспроизведения c.

В том же запросе я пытаюсь получить;

  1. имя_плейста ,
  2. имя_ видео,
  3. min_view_date / для каждого видео / для списка воспроизведения (когда видео было добавлено в указанный c список воспроизведения)
  4. дата представления (позже мы имеем фильтр для этого в предложении Where)
  5. сумма просмотров для конкретной даты_действия.

Я надеялся использовать оконную функцию для получения min_view_date. Вот что я сделал до сих пор.

Select playlist_name, video_name, 
     first_value (video_name) over(partition by playlist_name order by view_date asc ROWS UNBOUNDED 
     PRECEDING) as min_view_date,
     view_date
     sum(views) as total_views
From t1
Where view_date > '01-Jan-2020'

Есть много проблем с этим запросом: функция окна первого значения делает так, чтобы минимальное значение одной из дорожек из списка воспроизведения оставалось одинаковым для всех треки плейлиста. Однако мне нужно фактическое уникальное значение для каждой дорожки в списке воспроизведения. Кроме того, фильтр Where ограничивает мои значения min_dates. Минимальная дата может быть 2016.

Пример результатов: Playlist_name : 'A' ..... video_name : 'AHty' .. .... min_view_date = '1-Feb-2017' ...... view_date = '7-Jan-2020' ..... total_views = 1500

Я использую Amazon Redshift

Есть предложения? ' Спасибо

1 Ответ

0 голосов
/ 24 января 2020

Если я правильно понимаю, вы хотите смешать функции агрегирования и оконные функции:

select playlist_name, video_name, 
       min(view_date) as min_view_date,
       min(min(view_date)) over (partition by playlist_name order by view_date asc rows unbounded preceding) as min_view_date,
     view_date
     sum(views) as total_views
from t1
where view_date > '2020-01-01'
group by playlist_name, video_name, view_date;

first_value() здесь не кажется полезным.

...