1.查询每个学生出生30个月和30个星期后的日期。 格式:DATEADD (日期参数, 数字, 日期) 功能: 在向指定日期加上一段时间的基础上,返回新的 datetime 值。 日期参数规定了新值的类型。参数有:Year、Month、Day、Week、Hour select s.姓名,s.出生日期,dateadd(MONTH,30,s.出生日期)as newmonth, DATEADD(week,30,s.出生日期)as newweek from s 2.创建一个视图,如果某个学生所有课程成绩的平均分小于60,那么设置奖学金类 型为“三等奖”;如果大于或等于90,则设置奖学金类型为“一等奖”; 其余设置为“二等奖”。 create view view_jiangxuejin as select sc.学号,AVG(SC.成绩) as 平均成绩,类型= case when AVG(SC.成绩)<60 then '三等奖' when AVG(SC.成绩)>=90 then '一等奖' when AVG(SC.成绩)>=60 and AVG(SC.成绩)<90 then '二等奖' end from SC group by sc.学号 3.建立视图,要求显示学生的学号和课程“数据结构”的成绩 ,如果学生没有选修此课程,则显示“没有成绩”信息。 create view Stud(学号,成绩) as select distinct s.学号,grade= case when exists(select SC.课程号 from SC where SC.学号=s.学号 and SC.课程号=( select c.课程号 from c where c.课程号='数据结构')) then CAST(SC.成绩 as CHAR(4)) else '没有成绩' end from s left outer join SC on s.学号=SC.学号 and SC.课程号= (select c.课程号 from c where c.课程名='数据结构') 4.建立一自定义函数,要求能够显示某个同学选修某门课程的 成绩,如果某个同学没有选修某门课程,则显示“某某同学没有选 修某某课程”,例如:陈小红同学没有选修数据结构。 create function f_grade1(@xm char(10),@kcm char(20)) returns char(50)as begin declare @grade int set @grade=(select 成绩 from s,sc,c where s.学号=sc.学号 and sc.课程号 =c.课程号 and 姓名=@xm and 课程名=@kcm) if @grade is null begin return rtrim(@xm)+'没有选修'+@kcm end return @grade end select dbo.f_grade1('马俊萍','C++') 5.为学生基本信息表S中男同学的行声明游标,并使用FETCH NEXT逐个提取这些行。 declare cursor_boy cursor scroll for select * from s where s.性别='男' open cursor_boy fetch next from cursor_boy while @@FETCH_STATUS=0 begin fetch next from cursor_boy end close cursor_boy deallocate cursor_boy 6.建立标量函数course_stdevp,计算某门课程所有学生的成绩标准差、平均成绩; 并利用这些函数,计算课程“数据库”成绩的标准差,平均成绩。使用函数course_stdevp, 建立数据表c_g,要求包合课程名及相应课程的成绩标准差、平均成绩。 --计算平均成绩 create function course_stdevp1(@cname char(20)) returns int as begin declare @avggrade int set @avggrade=(select avg(成绩) from sc,c where sc.课程号=c.课程号 and 课程名=@cname) return @avggrade end --计算标准差 create function course_stdevp2(@cname char(20)) returns int as begin declare @stdegrade int set @stdegrade=(select stdevp(成绩)from sc,c where sc.课程号=c.课程号 and 课程名=@cname) return @stdegrade end delete create table c_g1 (课程名 char(20),平均成绩 as dbo.course_stdevp1(课程名),标准差 as dbo.course_stdevp2(课程名)) select * from c_g1 select dbo.course_stdevp2('数据库') select dbo.course_stdevp1('数据库')