LINUX.ORG.RU
ФорумAdmin

Подсчитать время в БД

 


1

1

Есть таблица с событиями:

2019-12-10 19:21:12 | start
2019-12-10 19:21:54 | stop
2019-12-10 19:22:02 | start
2019-12-10 19:31:55 | stop

таких событий много. Как подсчитать общее кол. времени между: start и stop ?



Последнее исправление: anonymus123 (всего исправлений: 6)

заюзать функцию timediff()

anonymous
()

Экспортируй в эксель, там можно посчитать

anonymous
()

Если всегда есть start перед stop, то можно как-то так:

WITH t1 AS (
  SELECT action, created_at,
    LAG(created_at) OVER (ORDER BY created_at) AS prev_created_at
  FROM events
) SELECT SUM(timestampdiff(SECOND, prev_created_at, created_at))
  AS total FROM t1 WHERE action = 'stop';

или так:

WITH t1 AS (
  SELECT action, created_at,
    ROW_NUMBER() OVER (PARTITION BY action ORDER BY created_at) AS num
  FROM events
) SELECT SUM(timestampdiff(SECOND, t2.created_at, t3.created_at))
  AS total
  FROM (SELECT created_at, num FROM t1 WHERE action = 'start') AS t2
  INNER JOIN (SELECT created_at, num FROM t1 WHERE action = 'stop') AS t3
  USING (num);
Darth_Revan ★★★★★
()
Последнее исправление: Darth_Revan (всего исправлений: 3)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.