我每分钟测量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)
非常感谢!
答案 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)