从给定的表中获取燃料的补充时间

时间:2017-01-24 10:33:40

标签: sql oracle oracle12c

我有一张表,其中给出了燃料填充详细信息,我们有id列然后是fuel_in_ltr列,它告诉我们我们有多少燃料然后我们的TIME列告诉我们在特定时间我们有多少燃料。

create table fuel_details (id number, fuel_in_ltr number, time timestamp);  

insert into fuel_details values (1, 10, '24-jan-2017 12:00');  
insert into fuel_details values (2, 9, '24-jan-2017 01:00');  
insert into fuel_details values (3, 8, '24-jan-2017 02:00');  
insert into fuel_details values (4, 7, '24-jan-2017 03:00');  
insert into fuel_details values (5, 12, '24-jan-2017 04:00');  
insert into fuel_details values (6, 11, '24-jan-2017 05:00');  
insert into fuel_details values (7, 10, '24-jan-2017 06:00');  
insert into fuel_details values (8, 13, '24-jan-2017 07:00');  
insert into fuel_details values (9, 12, '24-jan-2017 08:00');  
insert into fuel_details values (10, 11, '24-jan-2017 09:00');  
insert into fuel_details values (11, 10, '24-jan-2017 10:00');  
insert into fuel_details values (12, 13, '24-jan-2017 11:00');  

在上面的INSERT声明中我们可以看到,在下午12点,我们有10升燃料,然后在下午1点,我们有9升,下午2点,8升,所以在下午4点,我们有12升燃料,这意味着我们在下午4点重新填写我们的燃料所以从上表我们需要得到每次重新装修的时间!

我的数据库是 - Oracle Database 12c企业版12.1.0.2.0版 - 64位生产

1 个答案:

答案 0 :(得分:1)

使用LAG分析函数:

SELECT id, time
FROM   (
  SELECT f.*,
         LAG( fuel_in_ltr ) OVER ( ORDER BY time, id ) AS prev_fuel_in_ltr
  FROM   fuel_details f
)
WHERE  fuel_in_ltr > prev_fuel_in_ltr;