SQL题

来源:互联网 发布:protobuf数据解析 编辑:程序博客网 时间:2024/03/28 21:11
  1. 有三个表,如果学生缺考,那么在成绩表中就不存在这个学生的这门课程成绩的记录,写一段SQL语句,检索出每个学生缺考的科目。
    A 学生表(student)
    字段1 学生号(s_id)
    字段2 学生名(s_name)

    B 科目表(course)
    字段1 科目号(c_id)
    字段2 科目名(c_name)

    C 成绩表(grade)
    字段1 成绩号(g_id)
    字段2 学生号(s_id)
    字段3 科目号(c_id)
    字段4 成绩(score)

    select * from student join course left join grade on student.s_id=grade.s_id and course.c_id=grade.c_id where grade.score is null;
  2. 有如下表:
    日期(rstime)结果(result)2005-05-09胜2005-05-092005-05-092005-05-092005-05-102005-05-102005-05-10
    如果要生成下列结果,该如何写sql语句?
    日期胜负2005-05-09222005-05-1012
    select rstime,sum(case result when '' then 1 else 0 end)as 胜,sum(case result when '' then 1 else 0 end)asfrom result group by rstime;
  3. 用一条SQL语句,查询出成绩表(grade)每门课都大于80分的学生姓名
    namecoursescore张三语文81张三数学75李四语文76李四数学90王五语文81王五数学100王五英语90
    select distinct name from grade  where  name not in (select distinct name from grade where score<=80)


  4. 原表:courseidcoursenamescore1java702oracle903xml404jsp305servlet80
    为了方便阅读,查询此表后的显示结果如下(及格分数为60分):
    courseidcoursenamescoremark1java70pass2oracle90pass3xml40fail4jsp30fail5servlet80pass
    select *,case when score>=60 then 'pass' else 'fail' end as 'mark' from temp;

     

  5. 学生表(stu),如下:
    自动编号学号姓名课程编号课程名称分数12005001张三0001  数学6922005002李四0001  数学8932005001张三0001  数学69
    删除除了自动编号不同,其他字段都相同的学生冗余信息。
    create table temp as select 自动编号 from stu group by 学号,姓名,课程编号,课程名称,分数;delete from stu where 自动编号 not in (select 自动编号 from temp);

     

  6. 学生表S,课程C,学生课程表SC,学生可以选修多门课程,一门课程可以被多个学生选修,通过SC表关联:(SQL)
    1)写出建表语句;
    2)写出SQL语句,查询选修了所有选修课程的学生;
    3)写出SQL语句,查询选修了至少5门以上的课程的学生。

    1、建表语句
    S表:create table s(
              id int not null primary key,
              name varchar(20)
              );
    C表:create table c(
              id int not null primary key,
              cname varchar(20)
              );
    SC表:create table sc(
              sid int not null,
              cid int not null,
              foreign key(sid) references s(id),
              foreign key(cid) references c(id)
              );

    2、写出SQL语句,查询选修了所有选修课程的学生
    select stu.id,stu.name from s where (select count(sid) from sc where sid = stu.id) = (select.count(id) from c);

    3、写出SQL语句,查询选修了所有选修课程的学生
    select stu.id,stu.name from s where (select count(sid) from sc where sid = stu.id)>=5;
0 0
原创粉丝点击