从给定的 table 获取燃料的补充时间
Get Refill time of Fuel from a given table
我有一个 table,其中给出了燃料加注的详细信息,我们有 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 点重新加满燃料,所以从上面 table 我们需要得到每次加满油的时间!
我的数据库是 -
Oracle Database 12c 企业版 12.1.0.2.0 版 - 64 位生产
使用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;
我有一个 table,其中给出了燃料加注的详细信息,我们有 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 点重新加满燃料,所以从上面 table 我们需要得到每次加满油的时间!
我的数据库是 - Oracle Database 12c 企业版 12.1.0.2.0 版 - 64 位生产
使用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;