【发布时间】:2015-05-21 17:33:39
【问题描述】:
我想弄清楚如何查询事件之间的持续时间。我正在查看的表称为 agentstatedetail。为简单起见,表格中有 2 列,agentid 和 eventdatetime。该表列出了 agentid 和事件开始日期和时间。在每个事件之后,都会记录一个带有新事件日期和时间的新事件。我正在尝试从与同一代理匹配的先前 eventdatetime 中减去最新的 eventdatetime。我无法粘贴表格的图片,因为我是新手,但我已经粘贴了我处理过的代码。谢谢,希望有人能帮忙!!!
我尝试了 2 个查询示例,但它们不起作用。注意:这是在 SQL Informix 中,但我不在乎是否有人可以阐明,即使它在 MySQL 中。
select asd1.*, asd2.* from agentstatedetail asd1
join agentstatedetail asd2
on asd1.agentid=asd2.agentid
and asd1.eventdatetime < asd2.eventdatetime
and 0=(select count(*) from agentstatedetail asd3
where asd3.agentid =asd1.agentid
and asd3.eventdatetime between asd1.eventdatetime and asd2.eventdatetime
)
where asd1.eventdatetime BETWEEN '2015-5-1 13:00:00' AND '2015-5-2 13:00:00'
and asd2.eventdatetime BETWEEN '2015-5-1 13:00:00' AND '2015-5-2 13:00:00'
and asd1.agentid=1953
select asd1.*, asd2.*
from agentstatedetail asd1
join agentstatedetail asd2
on asd1.agentid=asd2.agentid
and asd1.eventdatetime < asd2.eventdatetime
left join agentstatedetail asd3
on asd3.agentid =asd1.agentid
and asd3.eventdatetime between asd1.eventdatetime and asd2.eventdatetime
where asd1.eventdatetime BETWEEN '2015-5-1 13:00:00' AND '2015-5-2 13:00:00'
and asd1.agentid=1953
and asd3.agentid is null
【问题讨论】: