Разница во времени PostgreSQL в минутах от столбца времени? - PullRequest
0 голосов
/ 11 ноября 2018

Я хочу рассчитать продолжительность времени в минутах, используя PostgreSQL (телефонные звонки).

- Разница между 08:54:55 и 08:56:10 (только время)

SELECT DATE_PART ('час', '08: 56: 10 ':: время - '08: 54: 55' :: время) * 60 + DATE_PART ('минута', '08: 56: 10 ':: время - '08: 54: 55' :: время); - Результат: 1

Как я могу изменить это, чтобы работать для всего набора данных? Время начала (только часы и минуты, секунды всегда равны 00) и время окончания находятся в одном столбце Event_Time, сгруппированном по Correlation_ID.

Event_Time  Customer_ID Case_ID Event_ID    Correlation_ID  Line_ID Internal_ID
10:11:00            id1     1       start       sd34        l3      456
10:13:00            id5     8       stop        rt56        l3      456
10:15:00            id4     3       start       tg84        l7      567
10:17:00            id7     5       start       ty69        l4      678
10:21:00            id5     5       stop        rt56        l7      678
10:31:00            id1     1       stop        sd34        l4      567

Я пробовал это решение, но оно работает только когда я указываю время http://www.sqlines.com/postgresql/how-to/datediff.

Спасибо!

1 Ответ

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

возможно с самостоятельным присоединением вот так:

SELECT
  start."Correlation_ID",
  extract(epoch from stop."Event_time" - start."Event_time")/60
FROM
  some_table AS start
JOIN
  some_table AS stop
  ON start."Correlation_ID"=finish."Correlation_ID"
  AND stop."Event_ID"='stop'
WHERE 
  start."Event_ID"='start'
;

или с такой группой:

SELECT
  "Correlation_ID",
  extract(epoch from 
     max(CASE "Event_ID" WHEN 'stop' THEN "Event_time" END ) 
    -min(CASE "Event_ID" WHEN 'start' THEN "Event_time" END ) 
    ) /60
FROM
  some_table
JOIN
  grouP BY "Correlation_ID"
;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...