zoukankan      html  css  js  c++  java
  • 子查询练习

    create database xuexiao
    go
    
    use xuexiao
    go
    
    --表一:学生表   student
    --学号:code   int        (主键)从1开始
    --姓名:name  varchar(50)
    --性别:sex        char(10)
    --班级:banji    char(10)
    --语文教师编号:yujiao        int    
    --数学教师编号:yujiao        int    
    --英语教师编号:yujiao        int    
    create table student
    (
     scode int primary key identity(10001,1)not null,--主键
     name varchar(50),
     sex        char(10),
     banji     char(10),
     yujiao        int    ,--外键
     shujiao    int,--外键
     yingjiao   int,--外键
    )
    --插入学生表数据
    --一班数据
    insert into student values('王红','','一班',1001,1004,1007)
    insert into student values('周瑜','','一班',1001,1004,1007)
    insert into student values('张飞','','一班',1001,1004,1007)
    insert into student values('乔雨','','一班',1001,1004,1007)
    insert into student values('王发','','一班',1001,1004,1007)
    --二班数据
    insert into student values('杜鹃','','二班',1002,1005,1008)
    insert into student values('白小飞','','二班',1002,1005,1008)
    insert into student values('刘小峰','','二班',1002,1005,1008)
    insert into student values('张强','','二班',1002,1005,1008)
    insert into student values('周莹莹','','二班',1002,1005,1008)
    --三班数据
    insert into student values('赵晓红','','三班',1003,1006,1009)
    insert into student values('王国章','','三班',1003,1006,1009)
    insert into student values('张三更','','三班',1003,1006,1009)
    insert into student values('潘晓丽','','三班',1003,1006,1009)
    insert into student values('楚红红','','三班',1003,1006,1009)
    
    --表二:教师表        teacher
    --教师编号:code        int    (主键)            从1001开始
    --负责课程:lesson        char(10)(语文、数学、英语)
    --年龄:age            int
    --生日:birth        datetime
    create table teacher
    (
      tcode        int primary key identity(1001,1)not null,--主键
      tname      varchar(20),
      lesson        char(10),
      age            int,
      birth        datetime,
    )
    insert into teacher values('张斌','语文',30,1986-3-30)
    insert into teacher values('齐红','语文',40,1976-9-20)
    insert into teacher values('王雪丽','语文',25,1991-2-3)
    
    insert into teacher values('崔刚','数学',36,1980-2-10)
    insert into teacher values('余兵','数学',30,1986-6-30)
    insert into teacher values('刘备','数学',50,1966-7-20)
    
    insert into teacher values('张灿灿','英语',30,1986-5-5)
    insert into teacher values('王丽丽','英语',26,1990-7-7)
    insert into teacher values('张婷婷','英语',35,1981-6-3)
    
    --表三:分数表        score
    --学号:code        int        (学生学号的外键)
    --语文分数:yufen        decimal(18,2)
    --数学分数:shufen        decimal(18,2)
    --英语分数:yingfen        decimal(18,2)
    
      create table    score
      (
        fcode    int    ,--外键
        yufen   decimal(18,2),
        shufen    decimal(18,2),
        yingfen    decimal(18,2),
    )
    --插入分数数据
    --一班数据
    insert into score values(10001,80,90,70)
    insert into score values(10002,50,80,60)
    insert into score values(10003,60,55,80)
    insert into score values(10004,70,90,55)
    insert into score values(10005,50,70,80)
    --二班数据
    insert into score values(10006,90,60,80)
    insert into score values(10007,60,50,66)
    insert into score values(10008,70,82,59)
    insert into score values(10009,63,87,85)
    insert into score values(10010,45,55,64)
    --三班分数
    insert into score values(10011,90,90,70)
    insert into score values(10012,60,80,70)
    insert into score values(10013,55,70,56)
    insert into score values(10014,70,80,70)
    insert into score values(10015,85,55,70)
    
    
    --学生表数据:插入三个班的学生数据,每个班的相同科目的教师都是相同的
    --至少每个班5个人
    
    --教师表数据:语文教师,数学教师,英语教师分别三个,每一个对应一个班级
    
    --分数表数据:学号对应的语文、数学、英语成绩
    select * from student
    select * from teacher
    select * from score
    
    
    
    
    
    
    
    
    --查询此次语文成绩最高的学生的信息
    select * from student where scode=
    (select top 1 fcode from score order by yufen desc)
    
    --查询此次数学成绩最高的学生的信息
    select * from student where scode=
    (select top 1 fcode from score order by shufen desc)
    
    
    --查询此次英语成绩最高的学生的信息
    select * from student where scode=
    (select top 1 fcode from score order by yingfen desc)
    
    --查询此次语文成绩最低的学生的信息
    select * from student where scode=
    (select top 1 fcode from score order by yufen )
    
    --查询此次数学成绩最低的学生的信息
    select * from student where scode=
    (select top 1 fcode from score order by shufen )
    
    --查询此次英语成绩最低的学生的信息
    select * from student where scode=
    (select top 1 fcode from score order by yingfen)
    
    --查询此次语文成绩最低的学生所任课教师的信息
    select * from teacher where tcode=
    (select yujiao from student where scode=
    (select top 1 fcode from score order by yufen ))
    
    
    --查询此次数学成绩最低的学生所任课教师的信息
    select * from teacher where tcode=
    (select shujiao from student where scode=
    (select top 1 fcode from score order by shufen ))
    
    --查询此次英语成绩最低的学生所任课教师的信息
    select * from teacher where tcode=
    (select yingjiao from student where scode=
    (select top 1 fcode from score order by yingfen ))
    
    --查询此次语文成绩最高的学生所任课教师的信息
    select * from teacher where tcode=
    (select yujiao from student where scode=
    (select top 1 fcode from score order by yufen desc ))
    
    
    --查询此次数学成绩最高的学生所任课教师的信息
    select * from teacher where tcode=
    (select shujiao from student where scode=
    (select top 1 fcode from score order by shufen desc ))
    
    --查询此次英语成绩最高的学生所任课教师的信息
    select * from teacher where tcode=
    (select yingjiao from student where scode=
    (select top 1 fcode from score order by yingfen desc ))
    
    --查询学生信息,将所有语文任课教师编号改为该科目的任课教师名字显示
    select scode,name, sex, banji, (select tname from teacher where teacher.tcode=student.yujiao),shujiao,yingjiao from student
    
    
    --查询学生信息,将所有任课教师编号改为该科目的任课教师名字显示
    select scode,name, sex, banji, 
    (select tname from teacher where teacher.tcode=student.yujiao)as 语文老师,
    (select tname from teacher where teacher.tcode=student.shujiao)as 数学老师,
    (select tname from teacher where teacher.tcode=student.yingjiao) as 英语老师
    from student
    
    select scode, name,sex ,banji,yujiao,shujiao,yingjiao from student
    join teacher on student.yujiao=teacher.tname
    or student.yujiao=teacher.tname
    or student.yujiao=teacher.tname
    
    --查询各个学生的学号,姓名,语文分数,数学分数,英语分数,以及三门课里面每一门课的任课教师姓名
    select scode,name,
    (select yufen from score where score.fcode=student.scode ) as 语文成绩,
    (select shufen from score where score.fcode=student.scode ) as 数学成绩,
    (select yingfen from score where score.fcode=student.scode ) as 英语成绩,
    (select tname from teacher where teacher.tcode=student.yujiao) as 语文老师,
    (select tname from teacher where teacher.tcode=student.shujiao) as 数学老师,
    (select tname from teacher where teacher.tcode=student.yingjiao) as 英语老师
    from student
    
    --查询每个班级里的语文最高分
    --一班
    select  top 1 yufen from score where fcode in
    (select scode from student where banji='一班') order by yufen desc
    --二班
    select  top 1 yufen from score where fcode in
    (select scode from student where banji='二班') order by yufen desc
    --三班
    select  top 1 yufen from score where fcode in
    (select scode from student where banji='三班') order by yufen desc
    --查询每个班级里的数学最高分
    select  top 1 shufen from score where fcode in
    (select scode from student where banji='一班') order by shufen desc
    --二班
    select  top 1 shufen from score where fcode in
    (select scode from student where banji='二班') order by shufen desc
    --三班
    select  top 1 shufen from score where fcode in
    (select scode from student where banji='三班') order by shufen desc
    --查询每个班级里的英语最高分
    select  top 1 yingfen from score where fcode in
    (select scode from student where banji='一班') order by yingfen desc
    --二班
    select  top 1 yingfen from score where fcode in
    (select scode from student where banji='二班') order by yingfen desc
    --三班
    select  top 1 yingfen from score where fcode in
    (select scode from student where banji='三班') order by yingfen desc
    
    --查看每个班的语文平均分
    select AVG(yufen) from score where fcode in
    (select scode from student where banji='一班')
    
    select AVG(yufen) from score where fcode in
    (select scode from student where banji='二班')
    
    select AVG(yufen) from score where fcode in
    (select scode from student where banji='三班')
    
    
    
    --查询语文课程平均分最高的班级的语文教师的信息
    declare @a decimal(18,2)
    select @a=AVG(yufen) from score where fcode in
    (select scode from student where banji='一班')
    declare @b decimal(18,2)
    select @b=AVG(yufen) from score where fcode in
    (select scode from student where banji='二班')
    declare @c decimal(18,2)
    select @c=AVG(yufen) from score where fcode in
    (select scode from student where banji='三班')
    declare @jie varchar(20)
    if @a>@b and @a>@c
    
       set  @jie ='一班'
    
    else if @b>@a and @b>@c
       set @jie ='二班'
    
    else if @c>@a and @c>@b
        set @jie ='三班'
        
        select * from teacher where tcode in
        (select yujiao from student where banji=@jie)
        
    --查询数学课程平均分最高的班级的数学教师的信息
    declare @a decimal(18,2)
    select @a=AVG(shufen) from score where fcode in
    (select scode from student where banji='一班')
    declare @b decimal(18,2)
    select @b=AVG(shufen) from score where fcode in
    (select scode from student where banji='二班')
    declare @c decimal(18,2)
    select @c=AVG(shufen) from score where fcode in
    (select scode from student where banji='三班')
    declare @jie varchar(20)
    if @a>@b and @a>@c
    
       set  @jie ='一班'
    
    else if @b>@a and @b>@c
       set @jie ='二班'
    
    else if @c>@a and @c>@b
        set @jie ='三班'
        
        select * from teacher where tcode in
        (select shujiao from student where banji=@jie)
    
    --查询英语课程平均分最高的班级的英语教师的信息
    declare @a decimal(18,2)
    select @a=AVG(yingfen) from score where fcode in
    (select scode from student where banji='一班')
    declare @b decimal(18,2)
    select @b=AVG(yingfen) from score where fcode in
    (select scode from student where banji='二班')
    declare @c decimal(18,2)
    select @c=AVG(yingfen) from score where fcode in
    (select scode from student where banji='三班')
    declare @jie varchar(20)
    if @a>@b and @a>@c
    
       set  @jie ='一班'
    
    else if @b>@a and @b>@c
       set @jie ='二班'
    
    else if @c>@a and @c>@b
        set @jie ='三班'
        
        select * from teacher where tcode in
        (select yingjiao from student where banji=@jie)
        
    --求某一个教师教学水平是否达标,学生成绩大于等于80人数超过3个为达标
    --刘备
    
      
      declare @laoshi decimal(18,2)
       select @laoshi=tcode from teacher where tname='刘备'
       declare @renshu int
      select @renshu=COUNT(*) from score where fcode in(select scode from student where shujiao=@laoshi)
      and shufen>=80
      if @renshu>=3
         print '教学水平达标'
      else 
         print  '教学水平不达标'
  • 相关阅读:
    【Android】6.3 ProgressDialog
    【Android】6.2 AlertDialog(警告对话框)
    【Android】6.1 Toast(信息提示框)
    【Android】6.0 第6章 对话框--本章示例主界面
    【Android】5.8 滑动条(SeekBar)
    Storm Trident API
    Storm Trident状态
    Storm Trident详解
    Storm的并行度
    StormUI详解
  • 原文地址:https://www.cnblogs.com/fengsantianya/p/5578906.html
Copyright © 2011-2022 走看看