2015-06-13 3 views
2

У меня есть таблица MySQL с отметками времени в каждой строке. Моя цель состоит в том, чтобы суммировать значения столбца суммы и группы с помощью пользовательского 24-часового интервала, начиная с 05:30:00 каждый день.Группа MySQL по конкретному 24-часовому интервалу

вход:

timestamp     amount 
--------------   ------ 
2015-01-19 08:30:12  4 
2015-01-19 15:37:40  2 
2015-01-20 01:57:38  2 
2015-01-20 07:10:07  4 
2015-01-20 22:10:38  2 
2015-01-21 08:35:55  4 

ожидается:

interval          SUM(amount) 
-------------         ----------- 
2015-01-19 05:30:00 - 2015-01-20 05:30:00  8 
2015-01-20 05:30:00 - 2015-01-21 05:30:00  6 
2015-01-21 05:30:00 - 2015-01-22 05:30:00  4 

Я попытался реализации решения (ы), представленные здесь Groupinginto interval of 5 minutes within a time range и здесь Mysql Group By 24 hour intervals - но без успеха.

ответ

2

Вы можете сделать это путем вычитания 5,5 часов и агрегирование по дате:

select date_add(date(timestamp - interval (5*60 + 30) minute), interval (5*60 + 30) minute) as interval_start, 
     date_add(date(timestamp - interval (5*60 + 30) minute), interval (24*60 + 5*60 + 30) minute) as interval_end, 
     count(*) as cnt 
from t 
group by date(timestamp - interval (5*60 + 30) minute) 
order by interval_start; 
+0

отличный ответ. Интервал - это то, что я буду исследовать дальше. У меня была небольшая проблема с строкой 4 - «из таблицы t», где «от t» было достаточно :) – DauleDK

Смежные вопросы