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

Jak pogrupować rekordy bazy danych w 15-minutowe interwały czasowe

Przede wszystkim masz subtelny błąd w swoim WHERE klauzula. Potrzebujesz:

where access_time >= '2013-05-28 02:00:00' 
  and access_time < '2013-05-28 10:00:00'

ponieważ Twoje przedziały kwadransowe biegną od określonej godziny do momentu przed innym konkretnym czasie. Potrzebujesz < , a nie <= , na koniec zakresu czasu.

Następnie potrzebujesz wyrażenia, które może przyjąć dowolną DATETIME wyrażenie i przekonwertuj je na DATETIME początku kwadransa, w którym występuje.

To zrobi to.

DATE_FORMAT(datestamp,'%Y-%m-%d %H:00:00') +
            INTERVAL (MINUTE(datestamp) -
                      MINUTE(datestamp) MOD 15) MINUTE

Okazuje się, na przykład '2014-05-07 14:53:22' , na '2014-05-07 14:45:00' .

Możesz zdefiniować ją jako funkcję przechowywaną w ten sposób, jeśli chcesz:

DELIMITER $$
DROP FUNCTION IF EXISTS `TRUNC_15_MINUTES`$$
CREATE  FUNCTION `TRUNC_15_MINUTES`(datestamp DATETIME) 
                 RETURNS DATETIME
    NO SQL
    DETERMINISTIC
    RETURN DATE_FORMAT(datestamp,'%Y-%m-%d %H:00:00') +
                INTERVAL (MINUTE(datestamp) -
                          MINUTE(datestamp) MOD 15) MINUTE$$
DELIMITER ;

Następnie możesz napisać zapytanie w ten sposób:

 select TRUNC_15_MINUTES(access_time) AS period_starting,
        user, count(user) as users 
   from user_access
 where access_time >= '2013-05-28 02:00:00' 
   and access_time <  '2013-05-28 10:00:00'
 group by TRUNC_15_MINUTES(access_time), user
 order by TRUNC_15_MINUTES(access_time), user

Jest to opisane tutaj. http://www.plumislandmedia.net/mysql/sql-reporting- przedziały czasowe/



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Data MySQL zmienia się na datę wczorajszą po zapisaniu JPA

  2. Django + MySQL - Nieznane kodowanie:utf8mb4

  3. Styl spłaszczenia tabeli przestawnej dla widoku Datagrid

  4. Zapytania KILL MySQL przy użyciu PHP, jeśli użytkownik zamknie przeglądarkę lub przejdzie z jednej strony na drugą

  5. Jaki jest najlepszy sposób na okresowe ładowanie danych do tabeli?