ビューの作成 TRANSCRIPTVIEW が、コースを受講していない人の評点を 0 に設定する方法を理解するのに苦労しています。説明が役立ちます。解決策と質問は以下のとおりです。ありがとう。
Student(ID,Name) Transcript(StudId,CourseName,Semester,Grade)
SQL で次のクエリを作成します。すべての学生 (ID、名前) のリストを作成し、各学生について、S2002 学期に受講したコースの平均成績をリストします。S2002 でコースを受講しなかった学生がいる可能性があることに注意してください。これらの場合、平均成績は 0 としてリストされる必要があります。 解決策: 最初に、すべての学生を成績 0 の NULL コースに登録する行で TRANSCRIPT を拡張するビューを作成します。その学期の平均成績は 0 になります。
以下は私を混乱させるものです、これはどのように機能し、なぜ機能するのですか?
CREATE VIEW TRANSCRIPTVIEW AS (
( SELECT * FROM Transcipt)
UNION
(
SELECT S.Id,NULL,’S2002’,0
FROM Student S)
WHERE S.Id NOT IN (
SELECT T.StudId
FROM Transcript T
WHERE T.Semester = ’S2002’) )
)
Remaining solution:
SELECT S.Id, S.Name, AVG(T.Grade)
FROM Student S, TRANSCRIPTVIEW T
WHERE S.Id = T.StudId AND T.Semester = ’S2002’ GROUP BY S.Id