【发布时间】:2011-07-11 14:31:13
【问题描述】:
我目前正试图使用 MySQL 获取 n 行组的平均值。
我有一个 MySQL 表 (data_conso),由以下格式的列组成: 标识(整数);日期(日期时间);数据(整数)
我想(为了制作一个没有太多点的漂亮图表)将所有这些值按组分割,比如说 100,然后得到每个组的平均值。
经过一番搜索和修改,我设法编写了以下查询:
SET @i := 0;
SELECT
@i:=@i+1 as rownum,
FLOOR(@i/100) AS `datagrp`,
AVG(`tmptbl`.`data`)
FROM (
SELECT `data`
FROM data_conso ORDER BY `date` ASC
) as `tmptbl`
GROUP BY `datagrp`
理论上可行(或者至少我不知道为什么不可行)但只返回一个值!非常奇怪的是,如果我删除 tmptbl.data 周围的 AVG() 函数,它会按应有的方式返回每个组,只是没有平均值。
我不明白为什么 AVG() 是一个聚合函数,不使用 GROUP BY 来进行计算。
我对这个问题感到非常沮丧,任何形式的帮助都将不胜感激。 请原谅我的英语,并提前感谢您的回答!
【问题讨论】:
标签: mysql group-by subquery average