问题:计算2条数据的处理时间差
背景:一个数据表中有一个处理时间的字段,每处理一笔,程序会插入当前时间,需要统计处理速度,就要用最后一笔的处理时间,减去第一笔的处理时间。
例如数据表A,有字段deal_time 表示处理时间。查询最后一行数据有一个处理时间
查询开始一行数据有一个处理时间,如果计算这两个时间差。多谢
背景:一个数据表中有一个处理时间的字段,每处理一笔,程序会插入当前时间,需要统计处理速度,就要用最后一笔的处理时间,减去第一笔的处理时间。
例如数据表A,有字段deal_time 表示处理时间。查询最后一行数据有一个处理时间
查询开始一行数据有一个处理时间,如果计算这两个时间差。多谢
Select (sysdate - (sysdate - 100)) * 1440 * 60 from dual --取两个日期之间的秒数
with tbl as
(
select 'a' as proc, sysdate - 0.8 as deal_time from dual
union all
select 'a' as proc, sysdate - 0.5 as deal_time from dual
union all
select 'a' as proc, sysdate - 0.2 as deal_time from dual
union all
select 'b' as proc, sysdate - 0.5 as deal_time from dual
union all
select 'b' as proc, sysdate as deal_time from dual
)
select t.proc, t.deal_time_dif
from (select proc,
nvl(lead(deal_time) over(partition by proc order by deal_time), deal_time) - deal_time as deal_time_dif,
iasc
from (select proc, deal_time,
row_number() over(partition by proc order by deal_time) as iasc,
row_number() over(partition by proc order by deal_time desc) as idesc
from tbl)
where iasc = 1 or idesc = 1) t
where iasc = 1;
在各位的建议下已经解决此问题。多谢
select ROUND(TO_NUMBER(max(t.deal_time)-min(t.deal_time)) * 24 * 60 * 60) from a t
看下是不是这样