ここから本文です

成績管理のSQLでの計算方法 学生の履修科目の平均点を出したいのですが 結合を...

nah********さん

2015/11/616:47:47

成績管理のSQLでの計算方法

学生の履修科目の平均点を出したいのですが
結合を使わずに複数のテーブルにまたがる条件を
リストにする場合どうすればいいでしょうか

状況としては

学籍番号-名前
学籍番号-科目-得点

という2つのテーブルがあって
学生の全科目の平均得点のリストを
学籍番号表示でなく名前表示で
作成したいのですがどうすればいいでしょうか

閲覧数:
181
回答数:
4
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

tak********さん

2015/11/912:20:54

ちなみに,質問者様はどのような職に就かれているのですか?

気になったので質問させていただきました。


あとよろしければ,ナイスとベストアンサーをお願いします!!

ちなみに,質問者様はどのような職に就かれているのですか?

気になったので質問させていただきました。...

この質問は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜3件/3件中

並び替え:回答日時の
新しい順
|古い順

プロフィール画像

カテゴリマスター

nob********さん

2015/11/912:53:57

結合しない理由が不明ですが。
select 名前,
(select avg(得点) from 得点 where 名前.学籍番号=得点.学籍番号)
from 名前
です。

ain********さん

2015/11/702:02:50

先の方もおっしゃっていますが、結合を使わない意味が分かりません。
もし結合が JOIN を意味をしているのであれば、JOIN を使わなくても以下のように書けます。しかし、やっていることは結合で JOIN と意味的には同じです。
実務では、JOIN を使わなければ関連するテーブルが増えるたびに WHERE 句の条件が際限なく増えてしまうので、JOIN を使ってできるだけ WHERE 句の条件の数を減らすことが多いと思います。

SELECT TABLE1.名前, TABLE3.平均点
FROM
TABLE1,
(SELECT 学籍番号, AVG(得点) 平均点 FROM TABLE2 GROUP BY 学籍番号) TABLE3
WHERE TABLE1.学籍番号 = TABLE3.学籍番号

chu********さん

2015/11/622:08:49

>結合を使わずに

誰が設定した制約ですか? 学校の課題とかでしょうか?
その場合、制約を適切に質問に記載できていますか?
普通に考えれば、JOINするでしょうが、制約がある理由が分かりません。

SELECT x.名前,y.avg_ten
FROM tbl1 AS x
LEFT JOIN
(SELECT 学籍番号,AVG(得点) AS avg_ten
FROM tbl2 GROUP BY 学籍番号) AS y
ON x. 学籍番号=y.学籍番号

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

せっかくの機会が台無しです

みんなのアンテナ

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる