Hirdetés

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

  • kw3v865
    senior tag

    Nem lenne egyszerűbb az időbélyegek különbsége alapján számolni?

    SQL szabvány szerint mint a dátum, mind az időbélyeg típusok kivonhatóak egymásból és akkor kapsz egy időintervallumot.
    Vagy dátum+időintervallum=dátum, időbélyeg+időintervallum=időbélyeg!

    Én legalábbis úgy nézném meg, hogy mi a legsűrűbben logolt környék, hogy önmagával összejoinolnám a táblát, hogy a második rekord időbélyege nagyobb legyen, mint az elsőé, és a különbségük egy percen belül legyen, aztán ezt a halmazt group by-olnám az első időbélyegre, és megszámolni, hány második tartozik hozzá.

    valami ilyesmire gondoltam:
    SELECT y.date, y.cnt
    FROM (
    SELECT x.date, count(x.date2) cnt
    FROM (
    SELECT a.date, b.date as date2
    FROM table a
    JOIN table b
    ON b.date > a.date
    AND b.date < a.date + interval '1' minute) x
    GROUP BY x.date) y
    ORDER BY y.cnt desc;

    Itt az erős join miatt csak azokat az dátumokat/időbélyegeket fogod visszakapni, ahol egy percen belül volt legalább egy másik bejegyzés.
    Magányos, kósza bejegyzéseket nem! (mondjuk a b.date >= a.date feltétellel azokat is figyelembe lehetne venni.)

    Köszi a választ, megnéztem ezzel a kóddal, de sajnos így az egymást követő sorokban a dátumok között csak 1-2 másodperc a különbség, és hiába állítom az interval értékét 1 percről akár 1000-re, ugyanazokat a dátumokat adja vissza. Kb. ugyanazt az eredményt adja, mint amikor egy egyszerű DISTINCT date-et futtatok a táblára. Legalább is a visszaadott sorok száma azonos.

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