我在一个MySQL数据库表中有以下数据,我想计算一个给定时间段的最短持续时间where state = 1
,放入格拉法那状态。
在这个表格片段中,期望的结果是第10行和第8行之间的timestampdiff()
,即2分钟。
| 身份证|洛克|温度|状态|日期时间|
| - ------|- ------|- ------|- ------|- ------|
| 1个|房间_1|十九点四|无|2022年12月29日18时14分09秒|
| 第二章|房间_1|十九点三|无|2022年12月29日18时15分09秒|
| 三个|房间_1|十九、二|1个|2022年12月29日18时16分09秒|
| 四个|房间_1|十九、二|1个|2022年12月29日18时17分09秒|
| 五个|房间_1|十九、二|1个|2022年12月29日18时18分09秒|
| 六个|房间_1|十九、二|无|2022年12月29日18时19分10秒|
| 七|房间_1|十九、二|无|2022年12月29日18时20分10秒|
| 八个|房间_1|十九、一|1个|2022年12月29日18时21分10秒|
| 九|房间_1|十九岁|1个|2022年12月29日18时22分10秒|
| 十个|房间_1|十九岁|无|2022年12月29日18时23分10秒|
我已经从chatGPT尝试了许多错误的解决方案,我不会在这里张贴的原因很明显。
周期部分非常简单,使用Grafana全局变量WHERE $__timeFilter(datetime)
,并使用它计算 total duration WHERE state = 1 AND $__timeFilter(datetime)
,因为记录生成基于1分钟,这使得对二进制0/1状态列求和非常容易(显然不需要state = 1
)。
我完全搞不懂如何在一个期间内处理持续期间。
1条答案
按热度按时间gcmastyq1#
你的查询要求有点复杂,我不得不使用窗口函数- LAG来获得结果。下面是你需要的查询。
**查询的输出:**x1c 0d1x
查看here演示