LINUX.ORG.RU

История изменений

Исправление Darth_Revan, (текущая версия) :

А, ну просто добавляешь это в подзапрос для 'UNPAUSE':

SELECT `agent`, SUM(timestampdiff(SECOND, prev_time, `time`)) AS DIFF
FROM (
  SELECT t1.agent, t1.time, MAX(t2.time) AS prev_time
  FROM (
    SELECT * FROM queue_log WHERE `event` = 'UNPAUSE'
    AND CAST(`time` AS DATE) > CURRENT_DATE - INTERVAL '1' MONTH) AS t1
  INNER JOIN (SELECT * FROM queue_log WHERE `event` = 'PAUSE') AS t2
  ON t2.time < t1.time GROUP BY t1.time, t1.agent
) AS t3
GROUP BY `agent` ORDER BY `agent`;

Исправление Darth_Revan, :

А, ну просто добавляешь это в подзапрос:

SELECT `agent`, SUM(timestampdiff(SECOND, prev_time, `time`)) AS DIFF
FROM (
  SELECT t1.agent, t1.time, MAX(t2.time) AS prev_time
  FROM (
    SELECT * FROM queue_log WHERE `event` = 'UNPAUSE'
    AND CAST(`time` AS DATE) > CURRENT_DATE - INTERVAL '1' MONTH) AS t1
  INNER JOIN (SELECT * FROM queue_log WHERE `event` = 'PAUSE') AS t2
  ON t2.time < t1.time GROUP BY t1.time, t1.agent
) AS t3
GROUP BY `agent` ORDER BY `agent`;

Ну или снаружи тоже можно, тогда будет чуть медленнее.

Исходная версия Darth_Revan, :

А, ну просто добавляешь это в подзапросы:

SELECT `agent`, SUM(timestampdiff(SECOND, prev_time, `time`)) AS DIFF
FROM (
  SELECT t1.agent, t1.time, MAX(t2.time) AS prev_time
  FROM (
    SELECT * FROM queue_log WHERE `event` = 'UNPAUSE'
    AND CAST(`time` AS DATE) > CURRENT_DATE - INTERVAL '1' MONTH) AS t1
  INNER JOIN (
    SELECT * FROM queue_log WHERE `event` = 'PAUSE'
    AND CAST(`time` AS DATE) > CURRENT_DATE - INTERVAL '1' MONTH) AS t2
  ON t2.time < t1.time GROUP BY t1.time, t1.agent
) AS t3
GROUP BY `agent` ORDER BY `agent`;