Sql 计算其他列中唯一id的时间差

Sql 计算其他列中唯一id的时间差,sql,hiveql,Sql,Hiveql,我有一个包含4列的SQL表,如下所示: 现在我想计算一个唯一订单id的开始和停止消息之间的时间 我需要的实际上是一个如下所示的结果表: 有人能帮我吗?尝试了很长时间,但没有得到正确的结果 更新:示例表已简化。还有其他消息类型,如ready、quit、finished,所以min和max date在这里不起作用 我的约会时间也是:2018-10-12T15:20:00Z SELECT order, max(datetime)-min(datetime) as time from table w

我有一个包含4列的SQL表,如下所示:

现在我想计算一个唯一订单id的开始停止消息之间的时间

我需要的实际上是一个如下所示的结果表:

有人能帮我吗?尝试了很长时间,但没有得到正确的结果

更新:示例表已简化。还有其他消息类型,如ready、quit、finished,所以min和max date在这里不起作用

我的约会时间也是:2018-10-12T15:20:00Z

SELECT order, max(datetime)-min(datetime) as time
from table
where status in('start','stop')
group by order

试试这个。

也许你可以从按订单ID分组的最大日期时间中减去最小日期时间。你是否更改了会话的nls_date_格式,使其打印时间仅为hh24:mm?谢谢你的快速回复@JaredC。我发布的表格只是一个例子。订单id还会生成一些其他状态消息,因此,只有当开始和停止是第一条和最后一条消息时,最小和最大日期才有效,但它们不是。然后,您必须执行一些子查询来获取开始和停止的值,并减去这些值。你能试试这个并用你尝试的代码更新你的问题吗?@nikhilsugandh,我的格式是2018-04-10T15:12:00Z=>ISO 8601订单有很多值如何根据它分组???它将抛出一个错误!!!!!!避免用否定的观点回答问题。当有人对这个问题提出否定的观点时,这意味着这个问题的价值很低。为了激励人们提出好的问题,低质量的问题不应该被回答。答案很简单,他在评论中澄清了这个问题。真不敢相信你竟然投票否决了我。