アプリ版:「スタンプのみでお礼する」機能のリリースについて

すみません、お分かりになる方、お教えいただきたいの
ですが、アクセスのクエリでフィールドの合計を
だしたいのですが、式がわかりません。

例:
以下のテーブルがあるとして、、
名前 テスト1 テスト2 テスト3 
Aさん  50    65    70
Bさん  30         35

Aさんのテスト結果の合計を出す式を教えて欲しいです。
また、Bさんの2回目のテスト結果がない場合の合計も
できる式でお願いします。

A 回答 (5件)

s_husky です。



<生徒名>

ID、名前
1、鈴木
2、中村

<成績簿>

ID  生徒名_ID 試験番号 点数
1    1   1    56
2    2   1    67
3    1   2    32
4    2   2    24

という設計ですと AVG が使えます。

ID  氏名  点数の平均
1  鈴木   44
2  中村   45.5

SELECT DISTINCTROW 生徒名.ID, 生徒名.氏名, Avg(成績簿.点数) AS [点数の平均]
FROM 生徒名 RIGHT JOIN 成績簿 ON 生徒名.ID=成績簿.生徒名_ID
GROUP BY 生徒名.ID, 生徒名.氏名;

※ Access風のテーブル設計に踏む込むとリレーショナルデータベースの基礎知識が必要です。
※ Excel風の使い方も、使用者のニーズに合致していれば否定しません。
※ なぜ、AVG関数が使えないかの説明のための補足とご理解下さい。
    • good
    • 0
この回答へのお礼

大変貴重なご助言、感謝致します。
まだまだ勉強が足りてない状態です。
今後もご指導いただけますと幸いです。ありがとうございました!

お礼日時:2006/09/01 13:42

平均でしたね、すみません。


そうしたら、受験科目数を表示する列を作ってあげてあとで合計点を割ってあげればいいかと。

無文字=未受験とするのであれば


SELECT テーブル1.氏名, テーブル1.テスト1, テーブル1.テスト2, テーブル1.テスト3, Val([テスト1] & " ")+Val([テスト2] & " ")+Val([テスト3] & " ") AS 合計点, IIf([テスト1] Is Null,0,1) AS 受験1, IIf([テスト2] Is Null,0,1) AS 受験2, IIf([テスト3] Is Null,0,1) AS 受験3, ([受験1]+[受験2]+[受験3]) AS 受験科目数, [合計点]/[受験科目数] AS 平均点
FROM テーブル1;

でどうでしょ。
    • good
    • 0
この回答へのお礼

ご丁寧にご教示いただきありがとうございました。
試してみます!

お礼日時:2006/09/01 13:42

さて、これはチクッとややこしいです。



テーブルがエクセル風の設計のためにアクセスの関数が全く使えません。
力技しかありません。

ID  氏名   成績_01 成績_02 成績_03
1   山田   50   65    70
2   鈴木   30        35

ID  氏名   成績_01 成績_02 成績_03
1   山田   50   65    70
2   鈴木   30   0     35

は、当然に平均点が違ってきます。
2回受けた平均と3回の内1回が0点とで計算を変えなければならないからです。

氏名  受験数 平均点
山田  3    61
鈴木  2    32

そこで、このような結果を返すクエリを考えてみました。

SELECT 氏名, Abs((NZ([成績_01],-1)>=0)+(NZ([成績_02],-1)>=0)+(NZ([成績_03],-1)>=0)) AS 受験数,
      Int((nz([成績_01])+nz([成績_02])+nz([成績_03]))/[受験数]) AS 平均点
FROM 成績一覧;
    • good
    • 0
この回答へのお礼

ご指摘の通り、テーブルがエクセル風、、
もっと勉強します!
今回はありがとうございました!

お礼日時:2006/09/01 13:43

クエリの設定画面で



「フィールド」に新たに

[テスト1] + [テスト2] + [テスト3]

と入力してリターンすれば

式1: [テスト1] + [テスト2] + [テスト3]

と出て計算されます。
このあと編集して「式1:」を「合計点:」と書き直せばタイトルにも「合計点」と出ます。
    • good
    • 0
この回答へのお礼

わかりにくい質問で、すみませんでした!
ご回答ありがとうございました!

お礼日時:2006/09/01 13:45

AVG関数ってのは平均なので、Aさんの場合61.7になるのでは?



合計だとSUM関数だと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。
よく理解できていないため、ちゃんとした質問に
なっていないところ、ご回答いただきありがとうございました!

お礼日時:2006/09/01 13:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!