Tuve una pregunta similar:collating-stats-into-time-chunks y lo habia respondido muy bien. En esencia, la respuesta fue:
Quizás pueda usar la función DATE_FORMAT() y la agrupación. Aquí hay un ejemplo, espero que pueda adaptarse a sus necesidades precisas.
SELECT
DATE_FORMAT( time, "%H:%i" ),
SUM( bytesIn ),
SUM( bytesOut )
FROM
stats
WHERE
time BETWEEN <start> AND <end>
GROUP BY
DATE_FORMAT( time, "%H:%i" )
Si su ventana de tiempo cubre más de un día y usa el formato de ejemplo, los datos de diferentes días se agregarán en cubos de 'hora del día'. Si los datos sin procesar no coinciden exactamente con la hora, puede suavizarlos usando "%H:00".
Gracias a Martin Clayton por la respuesta que me proporcionó.