我目前被困試圖讓使用MySQL n行的組的平均值得到N個行組的平均水平。與MySQL
我有一個MySQL表以下列格式列組成(data_conso): ID(INT);日期(日期時間);數據(INT)
我想(爲了使一個很好的圖形,沒有太多分),由假設100,然後讓每個組的平均值的組所有這些值拆分。
帶着幾分搜索和修修補補的,我設法編寫以下查詢:
SET @i := 0;
SELECT
@i:[email protected]+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
的AVG()函數。 data
,它應該返回每個組,只是沒有平均值。
我不明白的是爲什麼AVG(),這是一個聚合函數,不使用GROUP BY,以使其計算。
我真的被這個問題,任何形式的幫助受挫真的可以理解。 原諒我的英語,並提前感謝您的回答!
但是,您也可以按時間段進行分組,即「SELECT AVG(日期),AVG(數據)FROM data_conso GROUP BY CEIL((日期)/ 3600)'以獲得小時平均值。 – tera
非常感謝,這爲我工作。似乎madflow是對的,我的@i是一個問題。我還將它初始化爲-1,以便有100行的組(如果沒有的話,它只能組99個)。我會在幾天內使用你的日期分組的想法,我會讓你張貼! – Aweb