質問: mysqlにて累積平均を求めるには? 1のようなローデータがあった場合に、日付ごとに累積で平均値を求め2のような出力を行うには、どのような構文を組めばよいか? sqlに詳しい方、ご教授いただけますと幸いです。 よろしくお願いいたします。 1ローデータ -------------- date,種類,値 2018/9/1,a,50 2018/9/1,b,43 2018/9/2,a,70 2018/9/2,b,68 2出力形式 -------------- 日付, 累積平均a, 累積平均b 2018/9/1, 50, 43 2018/9/2, 60, 55.5 ※小数点第一まで表示
回答: こんにちは。こんな感じでもできます。 ※間違っている場合はどなたかご助言おねがいします~ select `date`, max(累積a)/max(カウントa) 累積平均a, max(累積b)/max(カウントb) 累積平均b from ( select date,種類, case when 種類 = 'a' then @i := @i+1 end as `カウントa`, case when 種類 = 'b' then @j := @j+1 end as `カウントb`, case when 種類 = 'a' then @k := @k+`値` end as `累積a`, case when 種類 = 'b' then @l := @l+`値` end as `累積b` from `xxx`, (select @i:=0)as a, (select @j:=0)as b, (select @k:=0)as c, (select @l:=0)as d )e group by date