SQL行状态更改之间的时间间隔
我有一个sqlite3表格,它每30秒记录一次我的加热系统和炉子的状态。这张桌子看起来像这样SQL行状态更改之间的时间间隔,sql,sqlite,Sql,Sqlite,我有一个sqlite3表格,它每30秒记录一次我的加热系统和炉子的状态。这张桌子看起来像这样 TABLE CLIMATESYSTEM ( id INTEGER PRIMARY KEY AUTOINCREMENT, Timestamp INT, FAN INT, SYSTEM INT ); 5577|1452049280|1|1 5578|1452049339|1|1 5579|1452049399|1|1 5580|1452049459|1|1 5581|145
TABLE CLIMATESYSTEM (
id INTEGER PRIMARY KEY AUTOINCREMENT,
Timestamp INT,
FAN INT,
SYSTEM INT
);
5577|1452049280|1|1
5578|1452049339|1|1
5579|1452049399|1|1
5580|1452049459|1|1
5581|1452049520|0|0
5582|1452049580|0|0
5583|1452049644|1|1
5584|1452049700|1|1
5585|1452049760|1|1
5586|1452049820|0|0
timestamp是自python中的epoch((int)time.time)起的秒数
桌子上有几行是这样的
TABLE CLIMATESYSTEM (
id INTEGER PRIMARY KEY AUTOINCREMENT,
Timestamp INT,
FAN INT,
SYSTEM INT
);
5577|1452049280|1|1
5578|1452049339|1|1
5579|1452049399|1|1
5580|1452049459|1|1
5581|1452049520|0|0
5582|1452049580|0|0
5583|1452049644|1|1
5584|1452049700|1|1
5585|1452049760|1|1
5586|1452049820|0|0
我试图做的是计算从开启(1)到关闭(0)的状态转换与从关闭到开启的下一次转换之间的时间秒数
示例计算#5577和#5581之间的秒数->添加到时间系统打开
示例计算#5581和#5583->添加到时间系统关闭之间的秒数
我打算做的是测量我的供暖系统在24小时内运行的总时间
关于起点有什么想法吗
谢谢首先,查找每行的下一个时间戳:
SELECT Timestamp,
(SELECT MIN(Timestamp)
FROM ClimateSystem AS CS2
WHERE CS2.Timestamp > ClimateSystem.Timestamp
) AS NextTimestamp,
System
FROM ClimateSystem;
然后使用该值计算每个间隔的长度:
SELECT NextTimestamp - Timestamp,
System
FROM (SELECT Timestamp,
(SELECT MIN(Timestamp)
FROM ClimateSystem AS CS2
WHERE CS2.Timestamp > ClimateSystem.Timestamp
) AS NextTimestamp,
System
FROM ClimateSystem);
然后根据需要添加过滤器:
SELECT SUM(NextTimestamp - Timestamp),
System
FROM (SELECT Timestamp,
(SELECT MIN(Timestamp)
FROM ClimateSystem AS CS2
WHERE CS2.Timestamp > ClimateSystem.Timestamp
) AS NextTimestamp,
System
FROM ClimateSystem)
WHERE Timestamp BETWEEN :StartOfDay AND :EndOfDay
GROUP BY System;
请澄清第三列,
风机
与问题的关系。风机列显示风机是否在运行(因为风机在熔炉关闭后运行)。对于这个问题,没有考虑。