Hirdetés

Új hozzászólás Aktív témák

  • nyunyu

    félisten

    válasz Petya25 #4684 üzenetére

    Először le kéne válogatni rendszámonként az utolsó dátumot, majd azokhoz a rendszám-dátum párosokhoz tartozó km értéket kikeresni a táblából.

    Alselect helyett joinnal:
    select
    t.datum,
    t.rendszam,
    t.km
    from tankolas t
    join (select rendszam,
    max(datum) max_datum
    from tankolas t
    group by rendszam) t2
    on t.rendszam = t2.rendszam
    and t.datum = t2.max_datum;

    Vagy rendszámonként besorszámozod dátum szerint csökkenőbe, és minden rendszámhoz az első rekordot veszed:

    select datum,
    rendszam,
    km
    from (select datum,
    rendszam,
    km,
    row_number() over (partition by rendszam order by datum desc) rn
    )
    where rn=1;

    Egyébként ha meg feltételezzük, hogy a km állás monoton növekvő (magyarul nem szokták babrálni az órát), akkor egyszerűbben is lehet, hiszen a max(datum) és a max(km) érték ugyanazon a rekordon kéne hogy legyen:

    select rendszam,
    max(datum) datum,
    max(km) km
    group by rendszam;

    De ilyet ne feltételezzünk, mert a valóság az, hogy ahány adatrögzítő, annyiféleképpen sikerült bevinnie az adatot az évek során.

Új hozzászólás Aktív témák