gpt4 book ai didi

mysql - MYSQL 中 DOWN 和 UP 事件之间的时间戳差异,但 UP 和 DOWN 事件之间的时间戳差异

转载 作者:行者123 更新时间:2023-11-30 22:43:33 26 4
gpt4 key购买 nike

我有 MYSQL 数据库,我想编写一个查询,返回 DOWN 和 UP 事件之间的时间差(以秒为单位)。我只需要 DOWN 和 UP 事件之间的区别,而不是 UP 和 DOWN 事件之间的区别。

这是我的数据库记录的示例:

comment       date_time       type
146 2015-05-20 07:07:34 UP
146 2015-05-20 07:02:32 DOWN
146 2015-05-20 00:03:13 UP
146 2015-05-19 23:57:36 DOWN

所以因为我只需要 DOWN 和 UP 事件之间的区别,2015-05-20 00:00:002015-05-20 12:00:00 之间的区别 应该是 00:05:02

我有一个 MYSQL 查询:

SELECT UP1.comment, sum(timestampdiff(second, DOWN1.date_time, UP1.date_time)) AS down_time_d FROM
(SELECT comment, date_time, type FROM event
WHERE comment like '%146%'
AND event.date_time BETWEEN '2015-05-20 00:00.00' and '2015-05-20 13:23:58'
AND type = 'SENSOR_UP'
) AS UP1,

(SELECT comment, date_time, type FROM event
WHERE comment like '%146%'
AND event.date_time BETWEEN '2015-05-20 00:00.00' and '2015-05-20 13:23:58'
AND type = 'SENSOR_DOWN'
) AS DOWN1
WHERE UP1.comment=DOWN1.comment
GROUP BY comment

此查询的问题是返回 DOWN 和 UP 之间以及 UP 和 DOWN 之间的差异。返回,我的差异是 06:54:17 而不是我期望的 00:05:02。如果 DOWN 和 UP 记录较多,则 DOWN 和 UP 之间的所有可能组合都会有所不同。

我应该在我的查询中更改什么,以便只返回 DOWN 和 UP 事件之间的时差总和?

感谢帮助

最佳答案

我将解释您的要求...
- 系统停机的总时间

系统从 DOWN 事件的那一刻起一直处于关闭状态,直到发生任何后续事件为止。

如果后续事件也是 DOWN,它会继续保持向下状态。

如果没有后续事件,系统将保持停机状态直到“现在”。

SELECT
comment,
SUM(down_time)
FROM
(
SELECT
down_event.comment,
TIMESTAMPDIFF(
second,
down_event.date_time,
COALESCE(
MIN(next_event.date_time),
'2015-05-20 13:23:58'
)
) AS down_time
FROM
event down_event
LEFT JOIN
event next_event
ON next_event.comment = down_event.comment
AND next_event.date_time > down_event.date_time
AND next_event.date_time BETWEEN '2015-05-20 00:00.00'
AND '2015-05-20 13:23:58'
WHERE
down_event.type = 'DOWN'
AND down_event.date_time BETWEEN '2015-05-20 00:00.00'
AND '2015-05-20 13:23:58'
GROUP BY
down_event.comment,
down_event.date_time
)
AS down_time
GROUP BY
comment
;

关于mysql - MYSQL 中 DOWN 和 UP 事件之间的时间戳差异,但 UP 和 DOWN 事件之间的时间戳差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30349253/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com