Рассчитать длительность по меткам времени в одном столбце SQL postgres - PullRequest
0 голосов
/ 10 ноября 2018

У меня есть база данных в Postgres SQL с информацией о пользователях, просматривающих онлайн-контент.Я хотел бы рассчитать продолжительность просмотра для каждого эпизода просмотра (эпизод - это одно начальное и одно остановочное действие для одного и того же идентификатора действия), а затем просмотреть его для каждого пользователя и за день.Я могу идентифицировать пользователей по User_ID и по столбцу Action, чтобы увидеть, когда просмотр начинается и заканчивается.

Поэтому я застрял в том, чтобы выяснить, как вместо двух строк на Действие (со временем начала и окончания) создать одну строку на действие Движения только с продолжительностью времени?

Date_time       User_ID Device_ID   Action  Action_ID  Channel_ID
22/07/2016 00:10    id2  pc      stop   123qwe      gn3
22/07/2016 00:10    id5  pc      start  345ert      tm6
22/07/2016 00:10    id1  mob     stop   567rfg      uy6
22/07/2016 00:12    id1  mob     start  567rfg      uy6
22/07/2016 00:13    d3   pc      stop   987yhn      io9

Я пытался Рассчитать продолжительность между отметками времени момента в UTC и Рассчитать длительность между отметками времени в одном столбце уже, и я сделал некоторое прибегание к поиску, ноЯ не стал ближе.

Спасибо!

1 Ответ

0 голосов
/ 10 ноября 2018

Вы можете получить даты как:

select date_trunc('day', date_time) as theday, user_id, action_id,
       min(date_time) filter (where action = 'start') as start_time,
       max(date_time) filter (where action = 'stop') as stop_time
from t
group by theday, user_id, action_id;

В таком случае продолжительность - это разница между ними, но точная логика зависит от того, как вы хотите видеть продолжительность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...