前言

每次面试必考SQL,小编这几年一直吃SQ的亏,考题无非就是万年不变学生表,看起来虽然简单,真正写出来,还是有一定难度。于是决定重新整理下关于SQL的面试题,也可以帮助更多的人过SQL这一关。

作为一个工作3年以上测试人员,不会sql基本上能拿到offer的希望渺茫,虽然平常也会用到数据库,都是用的简单的查询语句。困难一点的就直接找开发了,面试想留个好印象,还是得熟练掌握,能在纸上快速写出来。

  • 1.查询所有学生的数学成绩,显示学生姓名name, 分数, 由高到低
  • 2.统计每个学生的总成绩,显示字段:姓名,总成绩
  • 3.统计每个学生的总成绩(由于学生可能有重复名字),显示字段:学生id,姓名,总成绩
  • 4.列出各门课程成绩最好的学生, 要求显示字段: 学号,姓名,科目,成绩
  • 5.列出各门课程成绩最好的2位学生, 要求显示字段: 学号,姓名, 科目,成绩

万年不变学生表

有2张表,学生表(student)基本信息如下

科目和分数表(grade)

排序order by

1.查询所有学生的数学成绩,显示学生姓名name, 分数, 由高到低

SELECT a.name, b.score
FROM student a, grade b
WHERE a.id = b.id
AND kemu = '数学'
ORDER BY score
DESC

统计总成绩sum

2.统计每个学生的总成绩,显示字段:姓名,总成绩

SELECT a.name, sum(b.score) as sum_score
FROM student a, grade b
WHERE a.id = b.id
GROUP BY name
DESC

统计总成绩

3.统计每个学生的总成绩(由于学生可能有重复名字),显示字段:学生id,姓名,总成绩

SELECT a.id, a.name, c.sum_score
from student a,
(SELECT b.id, sum(b.score) as sum_score
FROM grade b
GROUP BY id
) c
WHERE a.id = c.id
ORDER BY sum_score
DESC

统计单科最好成绩

4.列出各门课程成绩最好的学生, 要求显示字段: 学号,姓名,科目,成绩

第一步先group by找出单科最好成绩,作为第一张表

SELECT b.kemu, MAX(b.score)
FROM grade b
GROUP BY kemu

再结合学生表和分数表,得到单科最好成绩

-- 单科最好的成绩
SELECT c.id , a.name, c.kemu, c.score FROM grade c, student a,
(SELECT b.kemu, MAX(b.score) as max_score
FROM grade b
GROUP BY kemu) t
WHERE c.kemu = t.kemu
AND c.score = t.max_score
AND a.id = c.id

总结 group by相关用法

函数 作用 支持性
sum(列名) 求和
max(列名) 最大值
min(列名) 最小值
avg(列名) 平均值
first(列名) 第一条记录 仅Access支持
last(列名) 最后一条记录 仅Access支持
count(列名) 统计记录数 注意和count(*)的区别

各门课程成绩最好的2位学生

5.列出各门课程成绩最好的2位学生, 要求显示字段: 学号,姓名, 科目,成绩

SELECT t1.id, a.name, t1.kemu,t1.score
FROM grade t1, student a
WHERE
(SELECT count(*) FROM grade t2
WHERE t1.kemu=t2.kemu AND t2.score>t1.score
)<2
and a.id = t1.id
ORDER BY t1.kemu,t1.score
DESC

交流QQ群:779429633

关于面试总结1-SQL学生表的更多相关文章

  1. 关于面试总结-SQL学生表

    前言 每次面试必考SQL,小编这几年一直吃SQ的亏,考题无非就是万年不变学生表,看起来虽然简单,真正写出来,还是有一定难度.于是决定重新整理下关于SQL的面试题,也可以帮助更多的人过SQL这一关. 作 ...

  2. 学生表sid,sname,结果表cid,cname,学生成绩表sid,cid,cscore,最高要求的分数输出候补课程专门命名

    --1.建表SQL: --学生表: -- Createtable createtable STUDENT ( SID   NUMBERnotnull, SNAME NVARCHAR2) ) table ...

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

    原帖链接:http://bbs.csdn.net/topics/280002741 表架构 Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程 ...

  4. SQL Server 基础之《学生表-教师表-课程表-选课表》(二)

    表结构 --学生表tblStudent(编号StuId.姓名StuName.年龄StuAge.性别StuSex) --课程表tblCourse(课程编号CourseId.课程名称CourseName. ...

  5. 关于面试总结2-SQL学生表

    前言 接着上一篇https://www.cnblogs.com/yoyoketang/p/10065424.html,继续学生表SQL 1.计算每个人的平均成绩, 要求显示字段: 学号,姓名,平均成绩 ...

  6. 学生表 课程表 成绩表 教师表 50个常用sql语句

    原文:http://www.cnblogs.com/zengxiangzhan/archive/2009/09/23/1572276.html Student(S#,Sname,Sage,Ssex) ...

  7. 面试题: 数据库 sql优化 sql练习题 有用 学生表,课程表,成绩表,教师表 练习

    什么是存储过程?有哪些优缺点? 什么是存储过程?有哪些优缺点? 存储过程就像我们编程语言中的函数一样,封装了我们的代码(PLSQL.T-SQL). 存储过程的优点: 能够将代码封装起来 保存在数据库之 ...

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

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

  9. sql server 很好的基础练习 <学生表-老师表-课程表-选课表>

    表结构 --学生表tblStudent(编号StuId.姓名StuName.年龄StuAge.性别StuSex) --课程表tblCourse(课程编号CourseId.课程名称CourseName. ...

随机推荐

  1. 使用node创建一个服务器,运行vue打包以后的文件

    原理就是使用node里的express框架,搭建一个服务器,然后访问dist文件夹里的文件 prod.server.js var express = require('express') var co ...

  2. [USACO17FEB]Why Did the Cow Cross the Road I G

    一开始想写$DP$,发现直接转移完全有后效性 所以本小蒟蒻写了个最短路 每走三步就要吃草是这个题最难搞的地方,我们建图时不妨只对于距离等于三的点连边 考虑完全覆盖所有情况,从一个点走一步,两步,然后三 ...

  3. JS文件上传神器bootstrap fileinput详解

    Bootstrap FileInput插件功能如此强大,完全没有理由不去使用,但是国内很少能找到本插件完整的使用方法,于是本人去其官网翻译了一下英文说明文档放在这里供英文不好的同学勉强查阅.另外附上一 ...

  4. .NetCore中如何实现权限控制 基于Claim角色、策略、基于Claim功能点处理

    .NetCore中如果实现权限控制的问题,当我们访问到一个Action操作的时候,我们需要进行权限控制 基于claims 角色控制 基于角色控制总觉得范围有点过大,而且控制起来感觉也不是太好,举一个例 ...

  5. Ubuntu服务器上相关软件或应用时常打不开的问题

    于接触linux系统时间不就,所以在操作上难免会出现失误,以下两个问题就是近期经常出现的问题,具体如下: 1.ubuntu服务器上的浏览器时常打不开. 2.安装的pycharm和系统自带的pychar ...

  6. ClouderaManager中Event Server报No such file or directory

    错误日志如下: 2015-06-24 06:13:10,176 ERROR com.cloudera.cmf.eventcatcher.server.EventCatcherService: Erro ...

  7. linux系统入门一些常用命令解析

    接触IT行业的时候,就使用了ubuntu系统做开发,那个时候是一头雾水,从习惯了window下的界面操作,到终端下的命令行操作,着实一开始让人很不习惯.但是没办法,那个时候公司每个人都用Ubuntu系 ...

  8. 跟厂长学PHP7内核(四):生命周期之开始前的躁动

    上一章我们对PHP的源码目录结构有了初步了解,本章我们继续从生命周期的维度对PHP进行剖析. 一.概览 生命周期是什么呢?你可以把它看作执行过程,PHP的生命周期也就是它从开始执行到结束执行的过程. ...

  9. 玩转SpringCloud(F版本) 二.服务消费者(2)feign

    上一篇博客讲解了服务消费者的ribbon+restTemplate模式的搭建,此篇文章将要讲解服务消费者feign模式的搭建,这里是为了普及知识 平时的项目中两种消费模式选择其一即可 本篇博客基于博客 ...

  10. Jindent——让intellij idea 像eclipse一样生成模版化的javadoc注释

    插件地址 http://plugins.jetbrains.com/plugin/2170?pr=idea 安装方法参考 http://www.cnblogs.com/nova-/p/3535636. ...