从SQL Query返回分段平均值?

时间:2010-05-06 21:25:45

标签: sql

我每分钟测量DNS服务器上的负载并将其存储到SQL DB中。我想绘制过去48小时的负载图表。这是69120(48 * 24 * 60)数据点,但我的图表只有800像素宽,所以为了让事情更快,我希望我的SQL查询只返回~800个数据点。

在我看来,这是一个非常标准的事情,但我一直在网上和书中搜索这样的事情一段时间,而我能找到的最接近的是滚动平均值。我正在寻找更多的“分段平均值”:将69120个数据点划分为~800个段,然后平均每个段。

我的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 个答案:

答案 0 :(得分: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);

答案 1 :(得分:1)

sum(queries)/ 100 group by(measurement_time / 100)