0

コース表

course_code   course_name      credit_points_reqd
1             Comp Science     300
2             Soft Engineering 300

件名テーブル

subject_code   subject_name    credit_points
CS123          C Prog          15
CS124          COBOL           15

登録表

student_id    student_name  course_code      subject_code      Results  
1             Lara Croft    1                CS123               70
1             Lara Croft    1                CS124               50
2             Tom Raider    2                CS123               60
2             Tom Raider    2                CS124               40
3             James Bond    1                CS123               NULL
3             James Bond    1                CS124               40

出力テーブル

student_name   course_name      credit_points_obt    credit_points_reqd
Lara Croft     Comp Science     30                   300          
Tom Raider     Soft Engineering 15                   300

現在TSQLを使用しています。これが状況です。これらのテーブルを用意して、私がそこに示した方法のような出力を得ました。取得したクレジット ポイントを計算する必要があります。生徒が受講した科目で 50 点以上を取得した場合、単位点が達成されます。クレジット ポイントをまったく受け取っていない学生を無視したい (たとえば、ジェームズ ボンドはまだポイントを獲得していないので無視されます)

select student_name, course_name,credit_points_obt,credit_points_reqd
FROM enrolment (SELECT student_full_name, SUM(credit_points) AS credit_points_obt
               FROM enrolment
               GROUP BY student_id),

完全に立ち往生しています...どこに行くべきかわかりません。

4

1 に答える 1

2

条件付きで合計して、主題のポイントを取得できます。何も指定されていない場合、結果は null になるため、having 句でそれらの学生/コースのペアを除外します。

結果が要件と矛盾するため、> 50 条件を >= 50 に変更しました。また、データによると、brewity の学生テーブルを省略したと言えますが、省略していない場合は必須です。

ライブ テストは @Sql Fiddleです。

select enrolment.student_name, 
       course.course_name,
       course.credit_points_reqd,
       sum(case when enrolment.results >= 50 
                then subject.credit_points 
            end) credit_points_obt
  FROM enrolment
 inner join course
    on enrolment.course_code = course.course_code
 inner join subject
    on enrolment.subject_code = subject.subject_code
 group by enrolment.student_name, 
          course.course_name, 
          course.credit_points_reqd
having sum(case when enrolment.results >= 50 
                then subject.credit_points 
            end) is not null
于 2012-05-31T08:58:36.623 に答える