10-29 插入学生总学分表(MSSQL)

本题目要求编写Insert语句,
计算每位同学获得的总学分,并将所有学生的总学分按学号升序排序后一起插入到totalcredit表中。

注意:

1)当某门课程成绩在60分以上时才能合计计入总学分

2)如果某学生尚未选修任何课程时,总学分计为0,并插入到totalcredit表中。

3)执行Insert语句之前,totalcredit表中没有任何记录。

提示:MSSQLServer 评测SQL语句。

insert into totalcredit (sno,totalcredit)
select sno ,sum(xf) as totalcredit
/*credit 学分*/
from (select stu.sno,case when sc.grade>=60 then cou.credit else 0 end as xf
     from stu
     left join sc on stu.sno=sc.sno
     left join cou on cou.cno=sc.cno) as b1
     /*以stu表左连可统计全体学生学分,
     从sc表查会遗漏未选课学生 。 */
     /*GROUP BY虽按sno分组,但子查询无别名,
     数据库找不到数据来源会报错 。*/
     group by sno
     order by sno asc;
     /*
CASE 待比较表达式
    WHEN 值1 THEN 结果1...
    ELSE 默认结果 END[as 别名]*/
     /*llll*/

你可能感兴趣的:(sqlserver,数据结构,数据库,mssql)