2010-05-06 4 views
1

Я измеряю нагрузку на DNS-серверах каждую минуту и ​​сохраняю их в SQL DB. Я хочу нарисовать диаграмму нагрузки в течение последних 48 часов. Это 69120 (48 * 24 * 60) точек данных, но мой график составляет всего 800 пикселей, поэтому, чтобы ускорить работу, я хотел бы, чтобы мой SQL-запрос возвращал только ~ 800 точек данных.Возвращает сегментированное среднее значение из SQL-запроса?

Мне кажется, что это довольно стандартная вещь, но я искал в Интернете и в книгах такую ​​вещь какое-то время, и ближайший, который я смог найти, был скользящим средним. То, что я ищу более «сегментированного среднего»: разделите 69120 точек данных в ~ 800 сегментов, затем сравните каждый сегмент.

My SQL таблица:

CREATE TABLE measurements (
    ip int, measurement_time int, queries int, query_time float 
) 

Мой запрос выглядит следующим образом

SELECT measurement_time, ip, queries FROM measurements WHERE measurement_time>(time()-172800) 

Спасибо большое!

ответ

2
DECLARE @interval int; 
SET @interval = 87; 
SELECT ip, AVG(queries), (measurement_time/@interval) AS interval 
FROM measurements 
WHERE measurement_time>(time()-172800) 
GROUP BY (measurement_time/@interval) 
ORDER BY (measurement_time/@interval); 
+0

Wow! Это было быстро! Спасибо вам обоим (Andrew and Doug) за быстрые ответы! –

1

сумма (запросы)/100 группа по (measurement_time/100)

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