mysql - 使用 MySQL 获取 n 行组的平均值

标签 mysql group-by subquery average

我目前无法尝试使用 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 来进行计算。

我对这个问题感到非常沮丧,非常感谢任何形式的帮助。 请原谅我的英语,提前感谢您的回答!

最佳答案

SET @i := 0;
SELECT AVG(`date`), AVG(`data`)
FROM
(
    SELECT
        @i:=@i+1 as rownum,
        FLOOR(@i/100) AS `datagrp`,
        `date`,
        `data`
    FROM data_conso
    ORDER BY `date` ASC
)
GROUP BY `datagrp`;

这样的事情应该可行,想法是将列 datagrp 附加到您的原始表,然后只需选择每个 datagrp 的平均值。

关于mysql - 使用 MySQL 获取 n 行组的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6651688/

相关文章:

mysql - 线程 "main"java.lang.NoClassDefFoundError : sdb/sdbconfig 中的异常

mysql - 如果没有指定聚合函数,MySQL 会做什么?

python - pandas 中 group by 的条件比率

php - LOAD 数据文件不导入日期时间

mysql - 错误 : SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint in Phalcon

mysql - 使用联接时 GROUP BY 未正确排序

MySQL:使用@vars 和子查询

mysql - 每个派生表必须有自己的别名 mysql 数据库

LIMIT 中的 MYSQL 子查询

mysql - 不在查询中的列的更新语句中的未知列