• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Access2003 条件付きの平均について)

Access2003の条件付きの平均について

このQ&Aのポイント
  • Access2003を使って、特定の年の月ごとの平均値を表示する方法について教えてください。
  • 具体的には、2008年は月2回のテストがあり、その1回目の日の平均値を表示したいです。一方、2009年は月1回のテストなので、そのまま1回分の値を表示したいです。
  • テーブルには複数の生徒がおり、何度もテストを受けています。生徒ごとに特定の年の月の平均値を表示する方法を知りたいです。

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

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.2

> 特定年のみ、その月の平均値を表示する方法が判らず困っております。 ご質問文の例で、月1回の2009年は「1回の平均」と考えればよいので、 単純に「月ごとの平均」を出せばよいことになります。 ですので、残る問題は、現状の記録内容から、どうやって「月ごと」という グループ化を行うか、になります。 とりあえず、『月日』がテキスト型であれば、添付画像のようなクエリで、 平均を求めることができます。 (テーブル名は、仮に『成績』としました) なお、添付画像では、肝心の「月ごとのグループ化」を行っている部分の 式が「Grp: [年] & 」で切れていますが、式の全容は以下の通りです: Grp: [年] & Left([月日], InStr(1, [月日], "/") - 1) ※この列は表示不要なので、『表示』のチェックは外しておきます。  (クエリを保存して閉じると、「Grp:」のみ削除され、式だけが残ります) ※Left関数は、第1引数に指定した文字列(上では「月日」フィールドの  値)から、第2引数で指定した文字数を返す関数です。  InStr関数は、第2引数で指定した文字列から、第3引数で指定した  文字列を検索し、その位置を返します。  (第1引数は、検索の開始位置)  これにより、『月日』のデータから「/」の位置を確認し、その1つ前(=-1)  までの文字列を『月』として取得しています。 ◆『月日』のデータ型が「日付/時刻型」で、書式設定で月日だけを表示  させていた場合は、上記では対応できません。  また、表示させる『月日』はクエリで「最小」を指定していますが、実際の  データが「3/7」と「3/15」だった場合は「3/15」が表示されます。  「3月7日」の方を表示させるには、一桁の日付を「3/07」と記録しておく  必要があります。

その他の回答 (2)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

Accessでの日付の型に関することは、ヘルプあるいは 以下のサポートに掲載されています。 http://support.microsoft.com/kb/210276/ja また、AccessとExcelでの日付型の違いは ここで述べるより以下のサイトに詳しく かいてあります。参考にしてください。 http://www.f3.dion.ne.jp/~element/msaccess/AcTipsExcelLinkDataType.html

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

日時の管理に関してとやかく言うつもりは ありませんが、データベースではこのような 日時の管理は統計、分析において無駄な 工程を追加したり分析、統計が困難に なったりします。 もし、AccessとExcelでデータのやり取りを するなら、一番元になるデータはAccessに 入力し、必要があればExcelにエクスポート し、閲覧、分析をするようにすれば後々の データの管理、統計、分析が楽です。 質問のことですが、クエリを二つ作ります。 まず、提示されたテーブルをT成績とします。 一つはQ日時変換、もう一つは適当な名前で 結構ですが、Q成績統計とします。 Q日時変換 SELECT CDate(Format(CDate(Left([T成績]![年],4) & "/" & ([T成績]![月日])),"yyyy\,mm\,dd")) AS 日時, T成績.名前, T成績.国語, T成績.英語, T成績.数学 FROM T成績; Q成績統計 SELECT DISTINCTROW Format$([Q日時変換].[日時],'yyyy/mm') AS 試験実施年月, Q日時変換.名前, Avg(Q日時変換.国語) AS 国語の平均, Avg(Q日時変換.英語) AS 英語の平均, Avg(Q日時変換.数学) AS 数学の平均 FROM Q日時変換 GROUP BY Format$([Q日時変換].[日時],'yyyy/mm'), Q日時変換.名前, Year([Q日時変換].[日時])*12+DatePart('m',[Q日時変換].[日時])-1; これらのSQL文を新規のクエリのSQLビューに 貼り付け、それぞれの名前で登録してください。 Q成績統計を開くとデータが表示されます。 何かあれば書き込みを。

関連するQ&A