• ベストアンサー

Access グループ毎で直近25件分で移動平均を出したいのですが

例えば表名[株価推移]の項目に、[銘柄番号][日付(mmdd)][株価]とある場合。 銘柄毎、日付毎の株価の平均を出すのであれば、 SELECT [銘柄番号],[日付(mmdd)],AVG([日付(mmdd)]) FROM [株価推移] GROUP BY [銘柄番号],[日付(mmdd)]; で求まるのですが、直近の25件分での移動平均となると どのようにすればよいか分かりません。 どなたか、教えていただけませんか。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

>一年間(1月~12月)の推移傾向が知りたいのでmmddにしています。 じゃ異なる年のものは含まれていないとして進めますね >抜けはありますが、重複はありません。 ということなので日付の順番で連番を振り 該当レコードより25以前のもののみの合計を取ります クエリを2段に使います 1つ目のクエリで銘柄番号毎に日付順に連番を振ります 連番: DCount("*","株価推移","日付<='" & [日付] & "' and 銘柄番号='" & 銘柄番号 & "'") このクエリから移動平均を求めるクエリを作ります (移動平均は日付じゃなく株価ですよね) 移動平均: DSum("株価","クエリ名","連番 between '" & IIf([連番]-24<1,0,[連番]-24) & "' And '" & [連番] & "' and 銘柄番号='" & 銘柄番号 & "'")

hana_taro
質問者

お礼

まさに考えていたとおりの結果を出せました。 本当にありがとうございました。

その他の回答 (1)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.1

日付がmmddでは年をまたぐ処理が出来ないですよ それと日付には重複や抜けはあるのでしょうか

hana_taro
質問者

補足

>日付がmmddでは年をまたぐ処理が出来ないですよ 一年間(1月~12月)の推移傾向が知りたいのでmmddにしています。 >それと日付には重複や抜けはあるのでしょうか 抜けはありますが、重複はありません。 他に足りない所がありましたら、また質問してください。 よろしくお願いします。

関連するQ&A