当前位置:Gxlcms > 数据库问题 > 经典SQL面试题(转)

经典SQL面试题(转)

时间:2021-07-01 10:21:17 帮助过:8人阅读

  • 有如下表:
    日期(rstime) 结果(result)
    2005-05-09
    2005-05-09
    2005-05-09
    2005-05-09
    2005-05-10
    2005-05-10
    2005-05-10

    如果要生成下列结果,该如何写sql语句?
    日期
    2005-05-09 2 2
    2005-05-10 1 2

    select rstime,sum(case result when then 1 else 0 end)as 胜,
    sum(case result when then 1 else 0 end)as 负 from result group by rstime;
  • 用一条SQL语句,查询出成绩表(grade)每门课都大于80分的学生姓名
    name course score
    张三 语文 81
    张三 数学 75
    李四 语文 76
    李四 数学 90
    王五 语文 81
    王五 数学 100
    王五 英语 90

    select distinct name from grade  where  name not in (select distinct name from grade where score<=80)


  • 原表:
    courseid coursename score
    1 java 70
    2 oracle 90
    3 xml 40
    4 jsp 30
    5 servlet 80

    为了方便阅读,查询此表后的显示结果如下(及格分数为60分):
    courseid coursename score mark
    1 java 70 pass
    2 oracle 90 pass
    3 xml 40 fail
    4 jsp 30 fail
    5 servlet 80 pass

    select *,case when score>=60 then passelse failend as markfrom temp;

     

  • 学生表(stu),如下:
    自动编号 学号 姓名 课程编号 课程名称 分数
    1 2005001 张三 0001   数学 69
    2 2005002 李四 0001   数学 89
    3 2005001 张三 0001   数学 69

    删除除了自动编号不同,其他字段都相同的学生冗余信息。
    create table temp as select 自动编号 from stu group by 学号,姓名,课程编号,课程名称,分数;
    delete from stu where 自动编号 not in (select 自动编号 from temp);

     

  • 学生表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 stu where (select count(sid) from sc where sid = stu.id) = (select.count(id) from c);

    3、写出SQL语句,查询选修了所有选修课程的学生
    select stu.id,stu.name from s stu where (select count(sid) from sc where sid = stu.id)>=5;
  • 经典SQL面试题(转)

    标签:select   阅读   class   delete   for   _id   not   建表   logs   

    人气教程排行