处理出租车计价器数据,计算空驶时间,即相邻两条记录相减
原始数据如下:
select id 编号,car_code 车牌号 ,DEAL_TIME 下车时间,DAY_TIME 上车时间 from DAT_TAXI_CASH_20130218 where car_code='BN1049' or car_code= 'BQ5514'
select id 编号 ,car_code 车牌号 ,DEAL_TIME 下车时间 ,DAY_TIME 上车时间,
ceil(((To_date(day_time,'hh24-mi-ss')-To_date(to_char(lag(DEAL_TIME )over (order by rownum), 'hh24-mi-ss'),'hh24-mi-ss')) )*24*60) as 空驶时间
from DAT_TAXI_CASH_20130218 where car_code='BN1049' or car_code= 'BQ5514' order by car_code,deal_time ;
查询结果如下:
使用分析函数lag 或lead实现
lag获取上一条记录的值
lead获取下一条记录的值
oracle 两个时间相减默认的是天数
oracle 两个时间相减默认的是天数*24 为相差的小时数
oracle 两个时间相减默认的是天数*24*60 为相差的分钟数
oracle 两个时间相减默认的是天数*24*60*60 为相差的秒数
最后用字查询过滤空值和负值就可以了!