Что-то типа GROUP BY ROUND(timestamp / 3600)
позволит вам получить среднее за час по всем точкам, в этот час входящим.
Но тут надо смотреть на баланс чтения/записи, если чтений сильно больше - лучше тогда агрегировать данные в отдельные таблицы для разных масштабов, потому что такой GROUP BY - это постоянное чтение всех имеющихся данных (в масштабе месяц, ага).