Содержимое таблицы
mysql> desc log; +-------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+------+-----+---------+-------+ | date | datetime | YES | | NULL | | | bytes | int(11) | YES | | NULL | | +-------+----------+------+-----+---------+-------+ 2 rows in set (0.00 sec)
надо было вывести с группировкой по времени с интервалом в 10 минут и суммированием объёма (bytes).
Нашёл такое решение:
select date(date) date1,
concat(hour(date),':',
lpad(floor(minute(date)/10)*10+1, 2, '0'), '-',
hour(date),':',
lpad((floor(minute(date)/10)+1)*10, 2, '0' ) ) hour,
sum(bytes) bytes
from log
group by date1, concat(lpad(floor(minute(date)/10)*10, 2, '0'), '-',
lpad((floor(minute(date)/10)+1)*10, 2, '0' ) )
order by date;
Результат выглядит так:
+------------+-----------+------------+ | date1 | hour | bytes | +------------+-----------+------------+ | 2011-03-14 | 6:41-6:50 | 4575378336 | | 2011-03-14 | 6:51-6:60 | 4724137748 | | 2011-03-14 | 7:01-7:10 | 4418186620 | | 2011-03-14 | 7:11-7:20 | 5121563587 | | 2011-03-14 | 7:21-7:30 | 4758454620 | | 2011-03-14 | 7:31-7:40 | 5282202028 | | 2011-03-15 | 6:31-6:40 | 3254517010 | | 2011-03-15 | 6:41-6:50 | 4426497452 | | 2011-03-15 | 6:51-6:60 | 4407375626 | | 2011-03-15 | 7:01-7:10 | 4263523418 | | 2011-03-15 | 7:11-7:20 | 5265712960 | | 2011-03-15 | 7:21-7:30 | 4263179541 | +------------+-----------+------------+