В настоящее время я застрял, пытаясь получить среднее значение групп из n строк, используя MySQL.
У меня есть таблица MySQL (data_conso), состоящая из столбцов в следующем формате:
id (int); Дата (даты и времени); данные (INT)
Я бы хотел (чтобы получить хороший график без слишком большого количества точек), чтобы разделить все эти значения на группы, скажем, 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`
Что в теории сработает (или, по крайней мере, я не знаю, почему это не сработает), но возвращает только одно значение! Что очень странно, если я удаляю функцию AVG () около tmptbl
. data
, она возвращает каждую группу так, как должна, только без усредненного значения.
Чего я не понимаю, так это того, почему AVG (), являющаяся агрегатной функцией, не использует GROUP BY для выполнения своих расчетов.
Я действительно разочарован этой проблемой, и любая помощь будет очень признательна.
Прости меня за мой английский и заранее спасибо за ответ!