• 数据库查询连接


    1.查询每个学生出生30个月和30个星期后的日期。
    格式:DATEADD (日期参数, 数字, 日期) 功能: 
    在向指定日期加上一段时间的基础上,返回新的 datetime 值。
    日期参数规定了新值的类型。参数有:YearMonthDay、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('数据库')
    View Code
  • 相关阅读:
    数字图像处理领域算法之高斯平滑
    字符串数组元素反转
    安装visual studio 2008 team 失败
    .NET中的正则表达式 (二)RegexOptions 枚举
    手动备份、还原windows7、office2010激活信息
    [转]蓝牙基带数据传输机理分析
    .NET中的正则表达式 (三)RegexCompilationInfo 类
    Android AVD语言设置
    蓝牙协议栈
    Bluetooth StructureBlueZ
  • 原文地址:https://www.cnblogs.com/kuugachen/p/3394659.html
Copyright © 2020-2023  润新知