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

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

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

Access2003 条件付きの平均について 以下のテーブルがあるとします 生徒    年   月日  国語  英語  数学 Aくん  2008年  4/10   30   42   50 Aくん  2008年  4/22   24   36   48 Aくん  2008年  5/11   10   80   20 Aくん  2008年  5/17   16   70   60           ・           ・           ・ Aくん  2009年  4/12   38   39   82 Aくん  2009年  5/11   10   80   20           ・           ・           ・ 2008年はテストを月2回、2009年は月1回実施しています。 これを、クエリにより、2008年は月2回の平均値(日付は1回目の日)、 2009年はそのまま1回分の値に表すことは可能でしょうか? 生徒    年   月日  国語  英語  数学 Aくん  2008年  4/11   27   39   49 Aくん  2008年  5/11   13   75   40           ・           ・           ・ Aくん  2009年  4/12   38   39   82 Aくん  2009年  5/11   10   80   20           ・           ・           ・ ※生徒は、Aくんのほかにも複数いることを想定しています。 特定年のみ、その月の平均値を表示する方法が判らず困っております。 以上、初心者な者で恐縮ですが、ご教示をお願いいたします。

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

  • ベストアンサー
  • 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

  • Access2003 クロス集計クエリでの合計

    ☆以下のようなテーブルで、フィールド[ID]~[C]があり、文字および数字のデータが混在しています。   ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓ =========================================== (テーブル(1)) [ID]  [A]      [B]    [C]     1    111     英語    10    2    222     英語    20    3    333     数学    30    4    111     国語    40   5    222     数学    50    6    333     国語    60    7    222     国語    70   8    333     英語    80     9    111     数学    90     =========================================== [課題] クロス集計クエリを作成する (1) フィールド[A]を行見出しに設定、    フィールド[B]を列見出しに設定、    フィールド[C]を集計する項目に設定する。   (2) フィールド[C]の値を列ごとに平均を計算し、    行ごとに合計を計算する。   ※ 列と行で、それぞれ集計した値を表示する   ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓ =========================================== [クロス集計結果]     合計  英語  国語  数学     111  140   10    40    90        222  140   20    70    50     333  170   80    60    30  --------------- 平均  150   36     56   56 ===========================================   ↑  ↑  ↑  ↑  ↑  ↑  ↑  ↑    上記のようなクロス集計クエリの結果を表示させたいのですが、 どうすればよろしいでしょうか? また、クエリだけでは出来ない場合は、SQLで教えていただければ幸いでございます。 お手数お掛けしますが、何とぞ宜しくお願い致します。

  • アクセスで偏差値計算

    いつもお世話になっております。アクセスで学校の成績処理をしようとしています。dataテーブルに生徒ID、国語、英語、数学のフィールドがあります。で、クエリで各科目の偏差値フィールドを追加したいんですが、方法が分かりません。教えてください。偏差値=(得点-平均点)/標準偏差*10+50で計算できることは分かってます。よろしくお願いします。

  • ACCESS重複した場合数値の高いレコードのみ表示

    ACCESSで成績管理をしています。 同一人物が同じ科目を複数回受験した場合、「成績の数値が高いレコード」のみを残し表示をしたいと考えています。 テーブル名:T_成績 ID 生徒番号 氏名  科目  成績 1  12001    田中  数学  10 2  12001    田中  英語  10 3  12001    田中  英語  20 4  12001    田中  国語  10 5  12002    吉田  数学  30 6  12002    吉田  数学  40 7  12002    吉田  国語  20 ↓ ID 生徒番号  氏名 科目  成績 1  12001     田中  数学  10 3  12001     田中  英語  20 4  12001     田中  国語  10 6  12002     吉田  数学  40 7  12002     吉田  国語  20 クエリ(SQL等)でどのような記述を行えばいいでしょうか。 よろしくお願いします。

  • Access2003で日付や時間の平均を計算

    テーブルに商品の購入時間を ・日付 = yyyy/mm/dd(型は日付) ・時間 = hh:mm:ss(型は日付) の2つのカラムで持っています。 1年間の商品購入テーブルに対して商品毎の特性をクエリで出そうと思いました。 ・時間の平均(何時に買われやすい商品か) ・日付の平均?(何月・どの季節によく買われている商品か) とりあえず、時間の平均をデザインビューで 「集計=平均」でとってみたところ「0.569493210808057」というような数値がでてきました。 日付型の時間(hh:mm:ss)の平均をとる場合、どのようにクエリを設定すればよいでしょうか? また、どの季節に買われているか、というのはAccessで出せるものなのでしょうか? すみませんが、よろしくお願いします。

  • アクセス(access)で過去3回分の平均の出し方

    あるサッカーチームの日付とシュート数と得点をフィールドにした、次のように構成されたテーブルがあります。 日付  シュート  得点 7/1, 1 , 0 7/5 , 10 , 3 7/11 , 8 , 2 クエリを使い過去3試合の得点の平均を出して行きたいと思います。 この場合は7月11日の部分に7/1,7/5,7/11の得点の平均を入れたいのです。 こういうことはエクセルなら簡単に処理できるのは承知の上でご存知の方がいらっしゃいましたらご教授ください。 日付   過去3試合の得点の平均 7/1 7/5 7/11   [ここに過去3試合の得点の平均がはいるようにしたいのです。]

  • 評定平均

    評定平均についてですが 評定平均は1年の学年末2年の学年末3年の1学期 の評価を1つ1つ足して科目数で割って出すと思うのですが 学校でもらった指定校の希望表には 写真のように書かれています。 例えば国語が 1年が4、2年が4、3年が5の時 国語の評定は4,3になりますよね 写真のような場合は国語の評定平均が4,3と表には書かれるのでしょうか 同様にしていくと 表には 国語4,3数学4,0英語4,7などと書かれ 最終的な評定平均としては 表に書かれた4,3、4,0、4,7を足した値になるのでしょうか? 別の言い方をすると、 評定平均というのは 教科ごとに平均を出して その各平均を足して科目数で割るのか 教科ごとに平均は出さず1年から3年まで1つずつ教科関係なく足して最後に割るのか どちらなのでしょうか

  • Javaについて教えてください。

    下記のような表を作りたいのですがJavaのソースコードを教えてください。 さらにAとBの1回目より2回目が良くなったのかを比較するソースコードを加えてください。 ーーー   1回目   英語 国語 数学 平均 A  50 40 30 40 B  40 30 80 50   2回目   英語 国語 数学 平均 A  40 50 60 50 B  50 30 40 40

  • アクセスクエリーの質問です

    生徒名,年月日,点数というフィールドのレコードがあり 田中一雄,95,数学 田中一雄,91,国語 佐藤良夫,85,英語 クエリーを実行すると 田中一雄,95,数学 佐藤良夫,85,英語 のようにそれぞれの人の最高得点のレコードを表示する方法がわかららずにいます。 助言をいただけると助かります。

  • アクセス クエリによる合計・平均値の表示方法

    アクセス クエリによる合計・平均値の表示方法についてご質問いたします。 まったくの初心者ですので、宜しくお願いいたします。 各テーブルから任意の期間をクエリを利用して表示させた時に、その期間の合計・平均値を 表示したいと考えております。 現在作成したクエリでは、任意期間のすべてのデータが表示されてしまいます。 (現状のクエリ=1月10日~11日) 種別    日付      曜日   店名   人数A   人数B   人数C ドリンク  2012/01/10  火    A店     10     10     40 ドリンク  2012/01/11  水    A店     10     10     40 ドリンク  2012/01/10  火    B店     15     15     30 ドリンク  2012/01/11  水    B店     15     15     30 (表示させたいクエリ=1月10日~11日平均) 種別    日付                曜日   店名   人数A   人数B   人数C ドリンク  2012/01/10~2012/01/11  非表示    A店     10     10     40 ドリンク  2012/01/10~2012/01/11  非表示    B店     15     15     30 全体集計                                合計25  合計25  合計70 上手く伝わらないかもしれませんが、上記のように表示させたいと考えております。 是非とも皆様のアドバイスを頂きたいと思いますので、宜しくお願いいたします。     

  • Access2000抽出方法

    実施者 日付   記録 1   9/8  3分 1   9/10  2分 1   9/11  1分 2   10/1  3分 2   10/2  4分 上記のような場合、実施者毎に最新の日付の記録を抽出する方法。つまり、 実施者 日付  記録 1   9/11  1分 2   10/2  4分 Dmaxを使えば良い気がしますが、うまくいきません。現在、クエリ上にて実施者毎にグループ化して、実施者毎の最高記録、最低記録、平均記録はできたのですが、最新記録がうまくいきません。できれば同じクエリ上で表示できればと思っています。 よろしくお願いします。

専門家に質問してみよう