首页 > 解决方案 > 如何在sql中查找“脏”状态床和“已完成”状态床之间的时间差异

问题描述

如何在 sql 中查找“脏”状态床和“已完成”状态床之间的时间差异。例如,这里是数据

ID       Cleaning Stage    Event Time
======   ==============    ==============   
790248   Dirty             1/2/2019  5:36 PM
790248   Assigned          1/2/2019  5:58 PM
790248   On Hold           1/2/2019  5:58 PM
790248   Assigned          1/2/2019  6:21 PM
790248   In Progress       1/2/2019  6:52 PM
790248   Completed         1/2/2019  7:59 PM

像这样它适用于所有床位。所以我想通过减去脏和完成之间的时间来计算每张床的清洁时间上面我只有一张床作为例子。谢谢你

标签: mysqlsqldatabase

解决方案


您可以使用条件聚合获得两种状态:

select id, min(case when stage = 'Dirty' then time end) as dirty_time,
       max(case when stage = 'Completed' then time end) as completed_time
from t
group by id;

然后,您可以使用timestampdiff()减去这些并以您想要的单位获得您想要的时间。


推荐阅读