У меня есть время, сохраненное в формате Unix int
.Я хочу сгруппировать результат по интервалам в 1 день, т.е. 86400 секунд.
выборка данных
timestamp | state
+++++++++++++++++++
1540427604 | ABC
1540770300 | PQR
1540770050 | PQR
1540751300 | ABC
Я хочу сгруппировать счетчик state
по периоду каждого 86400, т.е. есликто-то спросил с 1540425600 (то есть 25 октября 2018 года) до 1540771200 (то есть 29 октября 2018 года), тогда вывод должен быть
range | state | count
++++++++++++++++++++++++++++++++++++++++++
1540425600 - 1540512000 | ABC | 1
1540684800 - 1540771200 | ABC | 1
1540684800 - 1540771200 | PQR | 2
Я пробовал это так много вещей, но это то, что я думаю, ближе к..
select
concat(86400*floor(timestamp /86400), '-', 86400*floor(timestamp/86400) + 86400) as `range` , count(state)
from MT
where timestamp between MINDATE AND MAXDATE
group by `range` order by `range`;
Но вывод, который я получаю, не начинается с пройденного MINDATE или кратного MINDATE ... но он находится в диапазоне 86400. Я хочу, чтобы диапазон всегда начинался с mMINDATEесли такая запись существует ИЛИ в кратном количестве MINDATE * 86400
Пожалуйста, помогите.