【发布时间】:2021-11-27 15:48:36
【问题描述】:
我有一个事件日志,其中包含数百万个完整的日志,我们将表称为“Event_hist”。 “Event_hist”由另一个表中的事件参数填充,称为“案例”,仅包含最后一个事件/状态。
我需要根据部门时间和特定案例类型来查找不同部门内两个日志条目之间的时间使用情况(以分钟为单位)。
| Log_ID | Case_ID | Dep_ID | Case_type | Creation_TS | Log_TS | Log_txt |
|---|---|---|---|---|---|---|
| 1 | 1001 | 91 | 1 | 2021-09-02 10:00 | 2021-09-02 10:00 | Case opened |
| 2 | 1002 | 91 | 1 | 2021-09-02 10:05 | 2021-09-02 10:05 | Case opened |
| 3 | 1003 | 93 | 2 | 2021-09-02 10:07 | 2021-09-02 10:07 | Case opene |
| 4 | 1001 | 91 | 1 | 2021-09-02 10:00 | 2021-09-02 10:08 | Case halted |
| 5 | 1001 | 91 | 1 | 2021-09-02 10:00 | 2021-09-02 10:10 | Transferred to dep 93 |
| 6 | 1001 | 93 | 1 | 2021-09-02 10:00 | 2021-09-02 10:11 | Case opened |
| 7 | 1002 | 91 | 1 | 2021-09-02 10:05 | 2021-09-02 10:20 | Case processed |
| 8 | 1001 | 93 | 1 | 2021-09-02 10:00 | 2021-09-02 10:31 | Case processed |
| 9 | 1003 | 93 | 2 | 2021-09-02 10:07 | 2021-09-02 10:54 | Case processed |
想要的结果:
| Case_ID | Dep_ID | Time_used |
|---|---|---|
| 1001 | 91 | 10 |
| 1001 | 93 | 21 |
| 1002 | 91 | 15 |
Select
eh.case_id,
eh.dep_id,
round((eh.log_ts-eh.creation_ts)*1440,0) as time_used
From event_hist eh
Left join Cases C on eh.Case_id = c.Case_id
where eh.creation_ts > date '2021-09-01'
and eh.case_type=1
and eh.log_id=select(max(log_id) from event_hist where case_id=app.case_id)
我得到的结果是 case_id 与 Creation_TS 的最后一个日志条目之间的时间差(我认为)不稳定。 如何在此查询中考虑 Dep_ID 并获得所需的结果?
【问题讨论】:
-
我认为您的选择中有错字,在 creation_ts 之后)它显示为
',但我认为您的意思是*