- ベストアンサー
Access グループ毎で直近25件分で移動平均を出したいのですが
例えば表名[株価推移]の項目に、[銘柄番号][日付(mmdd)][株価]とある場合。 銘柄毎、日付毎の株価の平均を出すのであれば、 SELECT [銘柄番号],[日付(mmdd)],AVG([日付(mmdd)]) FROM [株価推移] GROUP BY [銘柄番号],[日付(mmdd)]; で求まるのですが、直近の25件分での移動平均となると どのようにすればよいか分かりません。 どなたか、教えていただけませんか。 よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>一年間(1月~12月)の推移傾向が知りたいのでmmddにしています。 じゃ異なる年のものは含まれていないとして進めますね >抜けはありますが、重複はありません。 ということなので日付の順番で連番を振り 該当レコードより25以前のもののみの合計を取ります クエリを2段に使います 1つ目のクエリで銘柄番号毎に日付順に連番を振ります 連番: DCount("*","株価推移","日付<='" & [日付] & "' and 銘柄番号='" & 銘柄番号 & "'") このクエリから移動平均を求めるクエリを作ります (移動平均は日付じゃなく株価ですよね) 移動平均: DSum("株価","クエリ名","連番 between '" & IIf([連番]-24<1,0,[連番]-24) & "' And '" & [連番] & "' and 銘柄番号='" & 銘柄番号 & "'")
その他の回答 (1)
- CHRONOS_0
- ベストアンサー率54% (457/838)
日付がmmddでは年をまたぐ処理が出来ないですよ それと日付には重複や抜けはあるのでしょうか
補足
>日付がmmddでは年をまたぐ処理が出来ないですよ 一年間(1月~12月)の推移傾向が知りたいのでmmddにしています。 >それと日付には重複や抜けはあるのでしょうか 抜けはありますが、重複はありません。 他に足りない所がありましたら、また質問してください。 よろしくお願いします。
お礼
まさに考えていたとおりの結果を出せました。 本当にありがとうございました。