gpt4 book ai didi

php - 选择字段连续相同的记录的最后日期

转载 作者:行者123 更新时间:2023-11-28 23:16:33 25 4
gpt4 key购买 nike

我有这个表,其中包含 idstatus_onestatus_twostatus_three 和“日期”。这是一种日志,每隔几分钟读取一个文本文件并填充表格。

示例数据:

Id    |    Status One    |    Status Two    |    Status Three    |    Date
--- | ---------- | ---------- | ------------ | ----
101 | 5 | 2 | 2 | 2017-04-13 13:48:32 <-
102 | 4 | 2 | 1 | 2017-04-13 13:48:32
103 | 5 | 2 | 2 | 2017-04-13 13:48:32
101 | 5 | 2 | 1 | 2017-04-13 13:38:32 <-
102 | 3 | 2 | 3 | 2017-04-13 13:38:32
103 | 5 | 2 | 1 | 2017-04-13 13:38:32
101 | 3 | 2 | 1 | 2017-04-13 13:28:32 <
102 | 4 | 2 | 2 | 2017-04-13 13:28:32
103 | 5 | 3 | 1 | 2017-04-13 13:28:32
101 | 5 | 2 | 2 | 2017-04-13 13:18:32 <
102 | 4 | 2 | 2 | 2017-04-13 13:18:32
103 | 5 | 3 | 1 | 2017-04-13 13:18:32

在我的示例中,id 为 101 的记录的 Status One 已设置为 5 10 分钟。(从 2017-04-13 13:38:322017-04-13 13:48:32)。

id 101 的记录的

Status Two 已设置为 2 30 分钟。

Status Three 的先前值与当前值不匹配,因此 2 已持续 0 分钟。

如何获取最后一条记录与上一次状态连续保持相同值的时间差。

id 101 所需的输出

Id    |    Status One         |    Status Two         |    Status Three
--- | ---------- | ---------- | ------------
101 | 2017-04-13 13:38:32 | 2017-04-13 13:18:32 | 2017-04-13 13:48:32

最佳答案

试试这个:

SELECT a.Id, a.status_one, MAX(a.date) - MIN(a.date) as difference
FROM
(SELECT id, status_one, date
FROM table
WHERE status_one = 5
AND Id IN (SELECT id
FROM table
WHERE status_one = 5
GROUP BY id
HAVING COUNT(*) > 1)
ORDER BY date DESC
LIMIT 2) a
GROUP BY a.Id, a.status_one;

它应该为您提供 status_one 的时间差,您也可以使用类似的逻辑来计算 status_twostatus_three 的时间差。

关于php - 选择字段连续相同的记录的最后日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43640689/

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