• ベストアンサー

アクセスで偏差値計算

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

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

  • ベストアンサー
  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.1

>偏差値=(得点-平均点)/標準偏差*10+50で計算できることは分かってます dataテーブル:生徒ID・国語・英語・数学 偏差値テーブル:国語標準偏差値・英語標準偏差値・数学標準偏差値 があればクエリ等を使い出来ると思いますが。 平均点はdataテーブルで平均点クエリを作ります。集計(グループ化)して国語・英語・数学の平均点を算出する。 平均点クエリはSQLだとクエリのSQLビューにコピーしても出来ます。(テーブル名・フィールド名が同じなら) SELECT DISTINCTROW Avg(dataテーブル.国語) AS 国語平均, Avg(dataテーブル.英語) AS 英語平均, Avg(dataテーブル.数学) AS 数学平均 FROM dataテーブル; で出来ます。 dataテーブルで新たにクエリを作り(偏差値フィールドがある作ってあるクエリでもかまいません)そのクエリにテーブル追加で偏差値テーブルと平均点クエリを追加します。 偏差値テーブルと平均点クエリはテーブル追加だけでフィールドを取得できるはずです。 各科目の偏差値のフィールドを作成します。 国語偏差値: ([国語]-[国語平均])/[国語標準偏差値]*10+50 英語偏差値: ([英語]-[英語平均])/[英語標準偏差値]*10+50 数学偏差値: ([数学]-[数学平均])/[数学標準偏差値]*10+50 各偏差値そのままだと小数点以下の端数が出ますので小数点以下の処理は 国語偏差値:Round(([国語]-[国語平均])/[国語標準偏差値]*10+50,0) のように丸めるとか切捨てとかしてください。 SQLでは SELECT dataテーブル.生徒ID, dataテーブル.国語, dataテーブル.英語, dataテーブル.数学, ([国語]-[国語平均])/[国語標準偏差値]*10+50 AS 国語偏差値, ([英語]-[英語平均])/[英語標準偏差値]*10+50 AS 英語偏差値, ([数学]-[数学平均])/[数学標準偏差値]*10+50 AS 数学偏差値 FROM dataテーブル, 標準偏差値, 平均点クエリ; こんな感じで出来ます。

shinchan_k
質問者

お礼

ありがとうございました。クエリでテーブルの追加しないと、フィールドは取得できないんですね。初歩的なミスでした。

関連するQ&A