1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| WITH tb_parcours AS
(
SELECT 1 id_parcours, to_date ('23/04/2010 07:41:00', 'DD/MM/YYYY hh24:mi:ss') Ma_date, 57 nb_km, 1 info, 3459 fuel_avant_prise, 1344 fuel_pris, 4800 fuel_avant_depart, 0 conso_a_calculer FROM Dual Union ALL
SELECT 2, to_date ('23/04/2010 14:37:00', 'DD/MM/YYYY hh24:mi:ss') Ma_date, 83, 1, 3080, 2919, 6000,0 FROM Dual Union ALL
SELECT 3, to_date ('23/04/2010 16:40:00', 'DD/MM/YYYY hh24:mi:ss') Ma_date, 84, 1, 3634, 2372, 6000,0 FROM Dual Union ALL
SELECT 4, to_date ('23/04/2010 18:47:00', 'DD/MM/YYYY hh24:mi:ss') Ma_date, 58, 1, 3339, 3665, 7000,0 FROM Dual Union ALL
SELECT 5, to_date ('24/04/2010 04:50:00', 'DD/MM/YYYY hh24:mi:ss') Ma_date, 50, 0, 0, 0, 0,0 FROM Dual Union ALL
SELECT 6, to_date ('24/04/2010 06:23:00', 'DD/MM/YYYY hh24:mi:ss') Ma_date, 63, 1, 3606, 3704, 7300,0 FROM Dual Union ALL
SELECT 7, to_date ('24/04/2010 08:32:00', 'DD/MM/YYYY hh24:mi:ss') Ma_date, 69, 1, 3970, 1426, 5400,0 FROM Dual
)
select id_parcours, ma_date, nb_km, info, fuel_pris, fuel_avant_depart,
id_ref_km, nb_km_ref, fuel_avant_depart_ref_km,
id_ref_fuel, fuel_pris_ref, fuel_avant_depart_ref_fuel,
fuel_avant_depart_ref_km
-(lead(fuel_avant_depart_ref_fuel,1) over( ORDER BY ma_date)
-lead(fuel_pris_ref,1) over( ORDER BY ma_date)
)conso_fuel,
( fuel_avant_depart_ref_km
-(lead(fuel_avant_depart_ref_fuel,1) over( ORDER BY ma_date)
-lead(fuel_pris_ref,1) over( ORDER BY ma_date)
)) * nb_km / nb_km_ref conso_par_km
from (
select id_parcours, ma_date, nb_km, info, fuel_pris, fuel_avant_depart,
id_ref_km,
sum(nb_km) over (partition by (id_ref_km)) nb_km_ref,
id_ref_fuel,
sum(fuel_pris) over (partition by (id_ref_fuel)) fuel_pris_ref,
sum(fuel_avant_depart) over (partition by (id_ref_km)) fuel_avant_depart_ref_km,
sum(fuel_avant_depart) over (partition by (id_ref_fuel)) fuel_avant_depart_ref_fuel
from (select id_parcours, ma_date, nb_km, info, fuel_pris, fuel_avant_depart,
max(id_ref) over (order by id_parcours asc) id_ref_km,
min(id_ref) over (order by id_parcours desc) id_ref_fuel
from (select id_parcours, ma_date, nb_km, info, fuel_pris, fuel_avant_depart,
decode (info, 1, id_parcours, to_number (null)) id_ref
from tb_parcours t
) v1
) v2
) v3
order by id_parcours |
Partager