欢迎来到天天文库
浏览记录
ID:1495908
大小:76.00 KB
页数:9页
时间:2017-11-12
《sqlserver综合编程讲稿》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、习题课(2)—综合编程一、在选修成绩中查询出选修了课程号为kc01且成绩比平均分高的学生名单。分别用以下两种方法实现:(1)使用局部变量(2)使用子查询[参考程序](1)使用局部变量USE学生选课GODECLARE@avgcjfloatSELECT@avgcj=AVG(成绩)FROM选修成绩WHERE课程号='kc01'SELECTs.*FROM学生sINNERJOIN选修成绩scONs.学号=sc.学号WHERE成绩>@avgcjAND课程号='kc01'(2)使用子查询USE学生选课GOSELECTs.*FROM
2、学生sINNERJOIN选修成绩scONs.学号=sc.学号WHERE课程号='kc01'AND成绩>all(SELECTAVG(成绩)FROM选修成绩WHERE课程号='kc01')或USE学生选课GOSELECTs.*FROM学生sWHERE学号IN(SELECT学号FROM选修成绩scWHERE课程号='kc01'AND成绩>all(SELECTAVG(成绩)FROM选修成绩WHERE课程号='kc01'))二、计算S=20+21+22+…+231declare@sfloat,@iint,@tfloat--由于
3、数据较大,乘方和求和不能用intset@s=1--阶乘的和,初值为20set@t=1--2的阶乘,初值为20set@i=1--循环变量,初值为1,即循环求21开始while@i<=31beginset@t=@t*2set@s=@s+@tset@i=@i+1EndPrint'20+21+22+……+231之和:'+convert(varchar(20),@s)三、根据如下规则对机试成绩进行反复加分,直到平均分超过85分为止,如下图所示。请编写T-SQL语句实现。90分以上:不加分80-89分:加1分70-79分:加2分
4、60-69分:加3分60分以下:加5分【参考程序】SELECT*FROMstuMarks--原始成绩DECLARE@labAvgfloatSELECT@labAvg=AVG(labExam)FROMstuMarksWHILE(@labAvg<85)BEGINUPDATEstuMarksSETlabExam=CASEWHENlabExam<60THENlabExam+5WHENlabExambetween60AND69THENlabExam+3WHENlabExambetween70AND79THENlabExam+2
5、WHENlabExambetween80AND89THENlabExam+1ELSElabExamENDSELECT@labAvg=AVG(labExam)FROMstuMarksENDSELECT*FROMstuMarks--加分后的成绩(选讲)4、在成绩表中,统计并显示笔试成绩,鉴于试题偏难,假定要提分,确保每人笔试都通过。提分规则是,先给每个人都加2分,查看是否都通过,如果没有全通过,每人再加2分,再看是否都通过,如此反复提分。如果加分后超过100分,就按100分计算。最后按美国的ABCDE五级打分制来显示成绩
6、。参考程序:DECLARE@nintUPDATEstuMarksSETwrittenExam=writtenExam+2--每人先加2分WHILE(1=1)--条件永远成立BEGINSELECT@n=COUNT(*)FROMstuMarksWHEREwrittenExam<60--统计不及格人数IF(@n>0)BEGINUPDATEstuMarksSETwrittenExam=writtenExam+2--每人加2分UPDATEstuMarksSETwrittenExam=100WHEREwrittenExam>10
7、0ENDELSEBREAK--退出循环ENDprint'加分后的成绩如下:'SELECT*FROMstuMarksprint'ABCDE五级显示成绩如下:'SELECTstuNo,成绩=CASEWHENwrittenExam<60THEN'E'WHENwrittenExambetween60AND69THEN'D'WHENwrittenExambetween70AND79THEN'C'WHENwrittenExambetween80AND89THEN'B'ElSE'A'ENDFROMstuMarks5、创建一个用户自
8、定义函数BooksPrice,以图书的名称为参数,返回该书的书价。并使用该函数查看《计算机文化基础》的价格。USE图书管理GoCREATEFUNCTIONBooksPrice(@smchar(42))RETURNSfloatAsBEGINDECLARE@djfloatSELECT@dj=定价FROMbooksWHERE书名=@smRETURN@
此文档下载收益归作者所有