sql >> Database teknologi >  >> RDS >> Mysql

MySQL grupperer resultater efter tidsperioder

Med lidt information på dine borde er dette ikke mere end en grundlæggende idé for dig, men du kunne gøre noget som dette:-

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)

Hent alle tidsstemplet og sæt dem sammen med alle andre tidsstempler, der er større, og brug MIN til at indsnævre det til det næststørste tidsstempler. Vælg derefter det antal, hvor forskellen er mindre end 600 sekunder (forudsat unix-tidsstempler).

EDIT - Hvis du vil have bundet ned for antallet af 10 minutter+ huller i begivenheder for brugere, så:-

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. Sådan kontrolleres om værdi findes i en MySQL-database

  2. Microsoft Azure:Hvad det er, og hvordan din virksomhed kan drage fordel af det

  3. Postgresql - ude af stand til at droppe database på grund af nogle automatiske forbindelser til DB

  4. Hvordan beregner jeg tabelstørrelse i Oracle