Укажите количество записей в базе данных с 5-минутными интервалами

У меня есть несколько Raspberry Pi, которые собирают wifi-маяки с мобильных устройств и сохраняют их в базе данных mySQL. Я создал представление в БД. Каждая запись в БД имеет MAC-адрес мобильного устройства, идентификатор pi, rssi, местоположение и временную метку

Я создал представление из нескольких таблиц, которое выглядит так.

+----------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+-------+ | pi_id | varchar(64) | NO | | NULL | | | name | varchar(127) | NO | | NULL | | | location | varchar(255) | NO | | NULL | | | mac_id | varchar(200) | NO | | NULL | | | rssi | int(11) | NO | | NULL | | | datetime | datetime | NO | | NULL | | +----------+--------------+------+-----+---------+-------+ 

Для каждого местоположения Pi / я хочу подсчитать, сколько пакетов / маяков было видно в течение каждого 5-минутного интервала. Я пытался что-то вроде этого.

 SELECT datetime , location, count(*) FROM packet_locations GROUP BY DATE(DATE_SUB(datetime, INTERVAL 5 MINUTE)), location; 

Мне нужен вывод следующим образом:

 +---------------------+----------+----------+ | datetime | location | count(*) | +---------------------+----------+----------+ | 2016-01-26 00:00:00 | Pi1 | 44 | | 2016-01-26 00:00:00 | Pi2 | 66 | | 2016-01-26 00:05:00 | Pi1 | 100 | | 2016-01-26 00:05:00 | Pi2 | 101 | | 2016-01-26 00:10:00 | Pi1 | 128 | | 2016-01-26 00:10:00 | Pi2 | 128 | +---------------------+----------+----------+ 

 SELECT concat( date_format(datetime,'%Y-%m-%d %k:') , lpad(floor(minute(datetime)/5)*5,2,'0') , ':00' ) datetime , location , count(1) FROM packet_locations GROUP BY date(datetime) , hour(datetime) , floor(minute(datetime)/5) , location