MySQL平均两级聚合

问题描述 投票:0回答:1

假设我有一个包含MySQL中四个字段的表(id,week,day,value)。 id字段是每天获取多个值的设备的标识符。

我想要的是计算每周一周的平均值。结果将是具有三个字段(id,week,average_week_day_value)的其他表,其中平均值不是一周的平均值,而是每周一次。我的意思是:首先我们计算日平均值,然后将星期平均值计算为每周平均值的平均值。

现在,我分两步实现,包括一个中间表(id,week,day,average-day-value)。在我有中间表之后,很容易计算最终表:(id,week,average_week_day_value)

我可以一步到位吗?

编辑

第一步查询:

INSERT INTO daily (id,week,day,average)
   SELECT id, week, day, avg(value)
   FROM table_values
   GROUP BY day

第二步查询:

INSERT INTO weekly (id,week,avg)
    SELECT id,week,avg(average)
    FROM daily
    GROUP BY week
mysql group-by average
1个回答
1
投票

您可以将第一个查询放在子查询中。

SELECT week, AVG(day_avg)
FROM (
    SELECT week, day, AVG(value) AS day_avg
    FROM table_values
    GROUP BY week, day
) d
GROUP BY week
© www.soinside.com 2019 - 2024. All rights reserved.