Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL grupuje wyniki według okresów

Przy niewielkiej ilości informacji na twoich stołach jest to dla ciebie tylko podstawowy pomysł, ale możesz zrobić coś takiego:-

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)

Pobierz wszystkie sygnatury czasowe i połącz je ze wszystkimi innymi sygnaturami czasowymi, które są większe, i użyj MIN, aby zawęzić to do następnego największego sygnatury czasowej. Następnie wybierz z tego liczbę, dla której różnica jest mniejsza niż 600 sekund (zakładając unixowe znaczniki czasu).

EDYTUJ - Jeśli chcesz ograniczyć liczbę ponad 10 minut w wydarzeniach dla użytkowników, to:-

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Używanie ScrollableResults Hibernate do powolnego odczytu 90 milionów rekordów

  2. Eksportuj i importuj wszystkie bazy danych MySQL jednocześnie

  3. Próbuję zaktualizować rekord za pomocą PDO

  4. Dołącz do nas w Amsterdamie na spotkanie z OptimaData i vidaXL

  5. Jak dodać nową kolumnę do tabeli MYSQL?