我有一个表 ( job_logs),其中包含以下记录:
id, job_id, user_id, status, created_at, job_type。
每次作业开始运行时,都会在job_log表中写入一条记录status='started'。当作业完成运行时,另一条记录将添加到表中status='completed'。
两条记录具有相同的user_id、job_type和job_id(由运行作业的进程确定 - 这两条记录是唯一的)。
我想要一个查询,该查询将返回表中的所有这些记录对(按 id desc 排序),但棘手的部分是我想将作业运行所花费的时间添加到具有“已完成”状态的记录中 ( completed.created_at - started.created_at)。
我怎样才能做到这一点?
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'
Run Code Online (Sandbox Code Playgroud)