SQL Serverに少し夢中になっているタスクがあり、誰かが助けてくれるかどうか疑問に思っています。
タスク:
データベース内で、という名前のストアドプロシージャを作成する必要がありますClassRegistration
。このストアドプロシージャの結果セットの列は、次のとおりである必要があります。
[Class]
–教えられるクラスの名前[Teacher Name]
-クラスを教えている人の名前[Registrations]
-クラスを受講するために登録した生徒の数[Number Paid]
-クラスの料金を支払った生徒の数
テーブル:
[Teacher]
:Teacher_ID
(PK)、TeacherName
[Class]
:Class_ID
(PK)ClassName
、、Teacher_ID
(FK)[ClassRegistration]
Student_ID
(FK)、Class_ID
(FK)、HasPaidFees
[Student]
Student_ID
(PK)、StudentName
まだ誰も登録していない場合でも、大学はすべてのクラスについて知る必要があります。
これまでの私のSQL:
Create PROCEDURE ClassRegistration
AS
SELECT DISTINCT
c.ClassName,
t.TeacherName,
COUNT(cr.Student_ID) As Registrations,
COUNT(case when cr.HasPaidFees = 1 then 1 else null end) As NumberPaid
FROM
Class As c,
Teacher As t,
ClassRegistration As cr,
Student As s
WHERE
(c.Class_ID = cr.Class_ID)
AND (cr.Student_ID = s.Student_ID)
GROUP BY c.ClassName, t.TeacherName
ストアドプロシージャを正常に作成できますが、出力が正しくないように見えます。助けていただければ幸いです:)。