以下题目都在MySQL上测试可行,有疏漏或有更优化的解决方法的话欢迎大家提出,我会持续更新的:)

    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-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;
    3. 用一条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)
    4. 原表:
      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 'pass' else 'fail' end as 'mark' from temp;
    5. 学生表(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);
    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 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面试题(转)的更多相关文章

  1. Oracle的一些经典SQL面试题

    实例1:测试数据: create table nba( team   varchar2(20), year number(4) ) SQL> select * from nba; TEAM    ...

  2. 经典SQL面试题(转)

    http://www.cnblogs.com/kcher90/archive/2013/03/13/2957932.html 有三个表,如果学生缺考,那么在成绩表中就不存在这个学生的这门课程成绩的记录 ...

  3. 经典sql面试题(学生表_课程表_成绩表_教师表)

    转载:https://www.cnblogs.com/qixuejia/p/3637735.html 表架构 Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cna ...

  4. MySql_34道经典Sql试题

    MySql_34道经典Sql试题   版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/xiaouncle/article/details/799390 ...

  5. (转)经典SQL查询语句大全

    (转)经典SQL查询语句大全 一.基础1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql s ...

  6. 浅谈c#的三个高级参数ref out 和Params C#中is与as的区别分析 “登陆”与“登录”有何区别 经典SQL语句大全(绝对的经典)

    浅谈c#的三个高级参数ref out 和Params   c#的三个高级参数ref out 和Params 前言:在我们学习c#基础的时候,我们会学习到c#的三个高级的参数,分别是out .ref 和 ...

  7. 经典sql语句大全,【转载】

    经典SQL查询语句大全   一.基础1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql se ...

  8. 汽车之家一道SQL 面试题,大家闲来无事都来敲一敲

    写在前面 上周去汽车之家面试,拿到这个SQL笔试题顿时感觉到有些陌生,因为好长时间不写SQL语句了,当时只写了表设计,示例数据和SQL语句都没写出来. 汽车之家应该用的SQL Server, 编程题一 ...

  9. sql面试题一 学生成绩

    sql面试题一 学生成绩   原帖链接:http://topic.csdn.net/u/20081020/15/1ABF54D0-F401-42AB-A75E-DF90027CEBA0.html 表架 ...

随机推荐

  1. springboot logback 相关使用

    参考: https://www.cnblogs.com/EasonJim/p/9159195.html https://blog.csdn.net/tianyaleixiaowu/article/de ...

  2. IO流-file

    1.1 IO概述 回想之前写过的程序,数据都是在内存中,一旦程序运行结束,这些数据都没有了,等下次再想使用这些数据,可是已经没有了.那怎么办呢?能不能把运算完的数据都保存下来,下次程序启动的时候,再把 ...

  3. A - Points and Segments CodeForces - 429E

    题解: 方法非常巧妙的一道题 首先考虑要求全部为0怎么做 发现是个欧拉回路的问题(很巧妙) 直接dfs一遍就可以了 而这道题 要求是-1,1,0 我们可以先离散化 完了之后判断每个点被奇数还是偶数条边 ...

  4. HDU 5977 Garden of Eden (树形dp+快速沃尔什变换FWT)

    CGZ大佬提醒我,我要是再不更博客可就连一月一更的频率也没有了... emmm,正好做了一道有点意思的题,就拿出来充数吧=.= 题意 一棵树,有 $ n (n\leq50000) $ 个节点,每个点都 ...

  5. RN错误随笔 - Unable to resolve module 'AccessibilityInfo'

    错误信息:.React Native 运行报错:Unable to resolve module 'AccessibilityInfo' 可以看到在 异常的返回的JSON 结构中给出了推荐的解决方法 ...

  6. jQuery滑动开关按钮效果

    效果图: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...

  7. 禁止root直接登陆linux系统

    直接修改文件 # vim /etc/ssh/sshd_config SyslogFacility AUTHPRIV PermitRootLogin no RSAAuthentication yes P ...

  8. HDU1507 Uncle Tom's Inherited Land* 二分图匹配 匈牙利算法 黑白染色

    原文链接http://www.cnblogs.com/zhouzhendong/p/8254062.html 题目传送门 - HDU1507 题意概括 有一个n*m的棋盘,有些点是废的. 现在让你用1 ...

  9. Hive的配置| 架构原理

    Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能. 本质是:将HQL转化成MapReduce程序 1)Hive处理的数据存储在HDFS 2)Hi ...

  10. Python线程同步

    线程执行 join与setDaemon 子线程在主线程运行结束后,会继续执行完,如果给子线程设置为守护线程(setDaemon=True),主线程运行结束子线程即结束: 如果join()线程,那么主线 ...