假设我有下表 -
CREATE TABLE data_points (t DATETIME PRIMARY KEY, value INTEGER);
我想通过计算表中每 10 个点的平均值来聚合数据。
即如果表有 20 个数据点,则结果是两个聚合点。第一个聚合点是 1-10 个数据点的平均值,第二个是 11-20 个数据点的平均值。
这可能使用 SQL 查询吗?
假设我有下表 -
CREATE TABLE data_points (t DATETIME PRIMARY KEY, value INTEGER);
我想通过计算表中每 10 个点的平均值来聚合数据。
即如果表有 20 个数据点,则结果是两个聚合点。第一个聚合点是 1-10 个数据点的平均值,第二个是 11-20 个数据点的平均值。
这可能使用 SQL 查询吗?
你是这个意思吗?查询在 MS SQL 服务器中工作。
SELECT AVG([VALUE]) OVER (PARTITION by par), *
FROM (
SELECT ((ROW_NUMBER() OVER(ORDER BY [VALUE]))-1)/10 par, * FROM TableName
)X
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
;