0

次の関係図があります。矢印は外部キーを表しています。青色の単語はテーブル名で、以下の単語は列名です。

ここに画像の説明を入力してください

私の質問は、このテーブルから次のデータを抽出する方法です。

-ID = 1の学生のGPAは何ですか?

-学部ごとの学生の平均GPAはどれくらいですか?

与えられた場合:値A = 4、B = 3、C = 2、D = 1、およびF = 0の5つの文字グレードのみがあり、GPAはコースクレジットの合計xコースグレード値を合計クレジットx4で割ったものです。 。(したがって、takes.gradeは0から4までのintです)。

私は何時間も無駄にこれを理解しようとしてきました。誰かが私を正しい方向に導くことができますか?

助けてくれてありがとう。

4

2 に答える 2

0

GPAの計算方法がよくわかりませんでした。元の投稿に何か問題があると思います。正しい場合と正しくない場合がある出発点は次のとおりです。

SELECT avg(t.grade) 
FROM takes t 
   INNER JOIN course c 
   ON t.course_id = c.course_id 
WHERE t.ID = 1;

SELECT c.dept_name, avg(grade)
FROM takes t 
    INNER JOIN course c 
    ON t.course_id = c.course_id
GROUP BY c.dept_name
于 2013-02-18T03:46:32.247 に答える
0

わかりました。私は実際に15年以上前にクライアントに対してこれを行う必要があり、すべての学生のデータベース全体に対してこれを行いました。

あなたがガイダンスを望むようにあなたの正確な質問なしで。

データをTEMPORARYテーブルにプルする単一のクエリから開始します

CREATE TEMPORARY TABLE AllStudentsCourses
SELECT blah... from blah... join blah.. where... order by ...

ある人がサインアップしたすべてのクラスのリストであり、あなたがそれにいる間、クラスごとに計算された列があり、グレードはAFを獲得しました。GPAの計算の基礎となるため、クラスの単位時間も必要になります。

Aの3時間のコースは、GPAに向けて3時間かかります。Aの6時間コースは、GPAに向けて6時間かかります。Bを使用した6時間のコースでは、GPAに向けて加重値が少なくなり、集計をロールアップする必要があります。

これで、生徒がすべてのクラスを試した後、サンプルで説明されているようにクラスごとに計算する必要があります。最初のクエリでそれを適用したい場合は、そうしてください。

それができたら、試行されたクレジット時間の合計と獲得したクレジット時間の合計をロールアップできます。

基本的な数学はあなたを助けるはずです。

于 2013-02-18T03:58:03.530 に答える