sql >> Database >  >> RDS >> Mysql

MySQL-groepering van resultaten per tijdsperiode

Met weinig informatie over je tabellen is dit niet meer dan een basisidee voor jou, maar je zou zoiets als dit kunnen doen:-

SELECT COUNT(*)
FROM
(
    SELECT a.TimeStamp AS ThisTimeStamp, MIN(b.TimeStamp) AS NextTimeStamp
    FROM SomeTable a
    INNER JOIN SomeTable b
    ON a.TimeStamp < b.TimeStamp
    GROUP BY a.TimeStamp
) Sub1
WHERE Sub1.ThisTimeStamp < (Sub1.NextTimeStamp - 600)

Haal alle tijdstempels op en voeg ze samen met alle andere tijdstempels die groter zijn, en gebruik MIN om dat te beperken tot de volgende grootste tijdstempel. Selecteer daaruit de telling waarbij het verschil minder dan 600 seconden is (uitgaande van unix-tijdstempels).

BEWERKEN - Als u het aantal onderbrekingen van 10 minuten of meer in evenementen voor gebruikers wilt vastleggen, dan:-

SELECT COUNT(*)
FROM
(
    SELECT a.user_id, a.TimeStamp AS ThisTimeStamp, MIN(b.TimeStamp) AS NextTimeStamp
    FROM SomeTable a
    INNER JOIN SomeTable b
    ON a.TimeStamp < b.TimeStamp
    AND a.user_id = b.user_id
    GROUP BY a.user_id, a.TimeStamp
) Sub1
WHERE Sub1.ThisTimeStamp < (Sub1.NextTimeStamp - 600)



  1. sqlite rij-ID's komen niet overeen met lijstweergave - ANDROID

  2. Linker join met slaapstandcriteria

  3. SQLite Node.js

  4. Hoe een door de gebruiker gedefinieerde uitzondering te declareren met behulp van een uitzonderingsvariabele in Oracle Database?