MySQLを使用してn行のグループの平均値を取得しようとしています。MySQLでn行のグループの平均を取得
私は、次の形式の列で構成されるMySQLテーブル(data_conso)を持っています。 id(int);日付(datetime);データ(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`
一つの価値! AVG()関数をtmptbl
の周りに置いておけば、私は非常に奇妙です。 data
の場合、平均値を持たないグループをすべて返します。
私が理解できないのは、集計関数であるAVG()が計算を行うためにGROUP BYを使用しない理由です。
私はこの問題に本当に不満を持ち、どんな種類の助けも本当に感謝しています。 私の英語のために私を許し、あなたの答えのために事前に感謝!
また、期間別にグループ化することもできます。時間平均を取得するには、「SELECT AVG(日付)、AVG(データ)FROM data_conso GROUP BY CEIL((date)/ 3600」を使用します。 – tera
ありがとう、これは私のために働いた。 madflowが正しかったようで、私の問題は問題でした。私はまた、100行のグループを持っているためにそれを-1に初期化しました(私がしなかった場合には99のグループしか作成しませんでした)。私は数日で日付でグループ化のあなたのアイデアを使用します、私はあなたを掲載し続けるよ! – Aweb