sql >> Databasteknik >  >> RDS >> Mysql

MySQL grupperar resultat efter tidsperioder

Med lite information på dina bord är detta inte mer än en grundläggande idé för dig, men du kan göra något så här:-

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)

Få alla tidsstämplar och sammanfoga dem mot alla andra tidsstämplar som är större, och använd MIN för att begränsa det till nästa största tidsstämpel. Välj sedan räkningen där skillnaden är mindre än 600 sekunder (förutsatt unix-tidsstämplar).

EDIT - Om du vill att antalet 10 minuter+ luckor i händelser för användare ska vara bundet 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. Stöder din Salesforce-drivrutin bulkåtgärder?

  2. php/mysql. Finns det mysql-funktion för att upptäcka om minst 2 vissa ord finns i minst ett mysql-radfält

  3. SQL Server-låsets anatomi och de bästa sätten att undvika dem

  4. Laddar .sql-filer från PHP