mysql - 如何在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
像这样它适用于所有床位。所以我想通过减去脏和完成之间的时间来计算每张床的清洁时间上面我只有一张床作为例子。谢谢你
解决方案
您可以使用条件聚合获得两种状态:
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()
减去这些并以您想要的单位获得您想要的时间。
推荐阅读
- amazon-web-services - lambda 函数仅针对文件名模式的上传触发
- c++ - 无法捕获 ImageMagick Image 构造函数异常
- python-3.x - 在 Python 脚本中将输出扩展到前 5 个电子邮件地址(从前 1 个)
- asp.net-core - 具有可选导航的 EF Core 中的自有类型
- c++ - 在编译时通过模板参数和 constexpr 语义生成浮点限制:
- vim - 修复 Tmux 中错误绑定的键
- c++ - 重载 operator= 用于 char*
- django - jwt 令牌授权无法与自定义角色一起正常工作
- html - 如何在数据表 jquery 中进行如下图所示的分页设计
- java - 可完成的未来浪费更多时间?