一尘不染

同一张表中两个记录之间的日期差

sql

我有一个表(job_logs)有以下记录:
idjob_iduser_idstatuscreated_atjob_type

每次作业开始运行时,都会使用记录job_log表中的记录status='started'。当作业完成运行时,将使用另一个记录添加到表中status='completed'

这两个记录有相同的user_idjob_typeJOB_ID (这是由进程中运行作业时确定的-唯一的这2个记录)。

我想要一个查询,该查询将返回表中的所有这些记录对(按ID desc排序),但棘手的部分是我想将作业运行的时间(completed.created_at - started.created_at)添加到“已完成”状态的记录中。

我怎样才能做到这一点?


阅读 293

收藏
2021-03-10

共1个答案

一尘不染

SELECT j1.job_id AS job_id, (j2.created_at - j1.created_at) AS time_run
FROM job_logs j1 INNER JOIN job_logs j2 ON (j1.job_id = j2.job_id)
WHERE j1.status = 'started' AND j2.status = 'completed'
2021-03-10