0

假设我有下表 -

CREATE TABLE data_points (t DATETIME PRIMARY KEY, value INTEGER);

我想通过计算表中每 10 个点的平均值来聚合数据。

即如果表有 20 个数据点,则结果是两个聚合点。第一个聚合点是 1-10 个数据点的平均值,第二个是 11-20 个数据点的平均值。

这可能使用 SQL 查询吗?

4

2 回答 2

0

你是这个意思吗?查询在 MS SQL 服务器中工作。

SELECT AVG([VALUE]) OVER (PARTITION by par), * 
FROM (
    SELECT ((ROW_NUMBER() OVER(ORDER BY [VALUE]))-1)/10 par, * FROM TableName
)X
于 2012-12-15T09:08:55.557 回答
0

This one seem to do what you want in MYSQL.

SELECT 
    avg(value) as `average`, 
    10*FLOOR(value/10) AS `valueBucket`, 
    CONCAT(10*FLOOR(value/10),'-',10*FLOOR(value/10)+9) AS `range`
FROM 
    data_points 
GROUP BY
    valuebucket
;

http://sqlfiddle.com/#!2/b4468/53/0

于 2012-12-15T09:29:25.687 回答