我有一个具有以下结构的数据库
+---------------------+------------+---------------+
| timestamp | EngOilP_sd | CompOilLVL_sd |
+---------------------+------------+---------------+
| 2015-06-24 20:28:07 | 0 | 0 |
| 2015-06-24 20:30:20 | 1 | 0 |
| 2015-06-24 20:36:47 | 1 | 0 |
| 2015-06-24 20:41:11 | 1 | 0 |
| 2015-06-24 20:43:29 | 1 | 0 |
| 2015-06-24 20:45:42 | 0 | 0 |
| 2015-06-24 20:47:51 | 0 | 0 |
| 2015-06-24 20:49:59 | 0 | 1 |
| 2015-06-24 20:52:01 | 0 | 1 |
| 2015-06-24 20:54:17 | 0 | 0 |
+---------------------+------------+---------------+
我想生成如下报告:
sd duration start stop
EngOilP_sd 15min 22s 2015-06-24 20:30:20 2015-06-24 20:45:42
CompOilLVL_sd 4min 18s 2015-06-24 20:49:59 2015-06-24 20:54:17
我应该补充一点,停止记录是第一个值 = 0 的记录并不重要,它可能是最后一个值 = 1 的记录
我怎样才能轻松地创建一个性能良好的查询来提供我需要的信息?我在应用程序中使用 Python,因此我不需要 SQL 以这种确切的形式输出报告,只需让我了解信息的内容即可。
可能有比这更优雅的东西,但由于您正在做一种枢轴(从列转换为行,即元数据到数据),它永远不会很漂亮。假设像这样的表:
因为我们要多次引用“枢轴”,所以我们为它创建一个视图:
开始时间(以@Pauls注释为定义)是各属性为1的最早时间:
停止时间是每个属性为 0 之后的最早时间:
添加另一层嵌套可以方便地确定持续时间: