SQL笔试真题练习
一、现有以下两张表:
第一张表名为cust,其表结构如下:
| 字段名 | 字段说明 | 是否主键 |
| Studentno | 学号,数据类型为整型的 | 是 |
| Name | 学生名字,数据类型为字符串型的 | 否 |
| Address | 学生住址,数据类型为字符串型的 | 否 |
| Telno | 电话号码,数据类型为字符串型的 | 否 |
第二张表名为mark,其表结构如下:
| 字段名 | 字段说明 | 是否为主键 |
| studentno | 学号,数据类型为整型的 | 是 |
| english | 英语成绩,数据类型为数字型的 | 否 |
| math | 数学成绩,数据类型为数字型的 | 否 |
| computer | 计算机成绩,数据类型为数字型的 | 否 |
1) [5分]请写出计算 所有学生的英语平均成绩的sq|语句。
SELECT
a.Studentno,
a. NAME,
b.english
FROM
cust a
JOIN mark b ON a.Studentno = b.studentno
2) [5分]现有五 个学生,其学号假定分别为11,22,33,44,55;请用一条SQL语句实现列出这五个学生的数学成绩及其姓名、学生地址、电话号码;
SELECT
a. NAME,
b.math,
a.Address,
a.Telno
FROM
cust a
JOIN mark b ON a.Studentno = b.studentno
WHERE
a.Studentno IN (11, 22, 33, 44, 55);
3)[5分]查询所有学生的姓名、计算机成绩,按照计算机成绩从高到低排序;
SELECT
a. NAME,
b.computer
FROM
cust a
JOIN mark b ON a.Studentno = b.studentno
ORDER BY
b.computer DESC;
4)[5分]查询所有总成绩大于240分的学生学号、姓名、总成绩,按照总成绩从高到低排序;
SELECT
a.Studentno,
a. NAME,
sum(b.math + b.english + b.computer) zcj
FROM
cust a
JOIN mark b ON a.Studentno = b.studentno
GROUP BY
a.Studentno,
a. NAME
HAVING
zcj > 240
ORDER BY
zcj DESC;
二、
| 表名 | 字段 | 备注 |
| student | id | 学号 |
| name | 学生姓名 | |
| course | id | 课程编号 |
| name | 课程名称 | |
| sc | sid | 学号 |
| cid | 课程编号 | |
| score | 成绩 |
请写出如下SQL:
A.查询姓‘王’的学生的个数;
select count(*) from student where name like '王%';
B. 查询“数学”比“语文”成绩高的所有学生的学号;
法一:使用case...when.. then...end语句:
select a.id,a.name,
sum(case when c.name='语文' then b.score end) chinese,
sum(case when c.name='数学' then b.score end) math
from student a
join sc b on a.id=b.sid
join course c on c.id=b.cid
group by a.id,a.name
having math>chinese
法二:嵌套查询的方式:
select student.id from student,
(select * from sc where cid=(select id from course where name='语文')) chinese,
(select * from sc where cid=(select id from course where name='数学')) math
where student.id=chinese.sid
and chinese.sid=math.sid
and math.score>chinese.score
C.查询平均成绩大于90分的同学的学号和平均成绩。
不涉及到学科的问题,只需关联学生表和成绩表即可:
SELECT
a.id,
a. name,
avg(b.score)
FROM
student a
JOIN sc b ON a.id = b.sid
GROUP BY
id,
name
HAVING
avg(b.score) > 90;
解题思路:

第二题中,①首先,要知道的是学生的id,姓名和语数成绩,查询出来如下所示:

②用case...when...then...end语句,分别查询出课程名为语文和数学的成绩,如下图所示:

注意:这里注意,为什么需要写两个case...when...then...end语句,因为我们要显示的是两列,实现分组功能
③去null值,用聚合函数,求和、最大值、最小值都可以

④筛选出数学成绩大于语文成绩的,having即可

第三题求平均成绩,不涉及到课程,只需要关联两张表即可
三、
查询学生信息表中男生一共有多少人
select count(*) from t_student where sex='男'
查询男生成绩中前3名的成绩
SELECT
b.score
FROM
student a
JOIN sc b ON a.id = b.sid
WHERE
sex = '男'
ORDER BY
b.score DESC
LIMIT 3
查询男生成绩中排名第3的成绩
SELECT
b.score
FROM
student a
JOIN sc b ON a.id = b.sid
WHERE
sex = '男'
ORDER BY
b.score DESC
LIMIT 2,1
如果在上一题的基础上,若第三名的男生成绩有重复的两个
distinct去重,会把重复的去掉,只保留一个
SQL笔试真题练习的更多相关文章
- 网易实习笔试真题C/C++
刚做的时候根本就没有想到解题思路,刚好看到了别人的思路,自己写了一下.里面对unordered_map及vector二维数组的建立很灵活,另外区别了一下map,unordered_map,hash_m ...
- 美团点评2017校招笔试真题-算法工程师A
美团点评2017校招笔试真题-算法工程师A 1.下面哪种STL容器的实现和其它三个不一样 A. set B. deque C. multimap D. map 正确答案: B STL的容器可以分为以下 ...
- 美团点评2017校招笔试真题-算法工程师B
美团点评2017校招笔试真题-算法工程师B 1.以下关于经典的k-means聚类的说法哪个是错误的? A:k-means聚类算法是全局收敛的 B:k-means的聚类结果和初始聚类中心点的选取有关 C ...
- 《PHP面试笔试真题库》——PHP面试的好帮手
你好,是我琉忆. 一个文艺的PHP开发工程师. 很荣幸能够在这里带来我的第一本新书--<PHP程序员面试笔试真题库>. 一.创作过程 <PHP 程序员面试笔试真题库>是我的第三 ...
- 《PHP程序员面试笔试真题解析》——新书上线
你好,是我--琉忆.很高兴可以跟你分享我的新书. 很高兴,在出版了PHP程序员面试笔试宝典后迎来了我的第二本书出版--<PHP程序员面试笔试真题解析>. 如果你是一个热爱PHP的程序员,刚 ...
- 笔试真题解析 ALBB-2015 算法project师实习生机试
1.用十进制计算30!(30的阶乘),将结果转换成3进制进行表示的话,该进制下的结果末尾会有____个0. [解析] 计算N.下3进制结果末尾有多少个0,事实上就是计算3进制中的3被进位多少次,仅仅要 ...
- unity,C#,游戏面试笔试真题
最开始的两家公司笔试面试题目 一家公司是学校聘请研究教育方面VR课件的公司,面试没几天,就收到了面试通过的消息,后面因为通过了另一家游戏公司而拒绝了. 另一家公司是一家游戏外企,在春熙路,当时笔试还可 ...
- 笔试真题解析 ALBB-2015 系统project师研发笔试题
4)在小端序的机器中,假设 union X { int x; char y[4]; }; 假设 X a; a.x=0x11223344;//16进制 则:() y[0]=11 y[1] ...
- Java面试中笔试题——Java代码真题,这些题会做,笔试完全可拿下!
大家好,我是上海尚学堂Java培训老师,以下这些Java笔试真题是上海尚学堂Java学员在找工作中笔试遇到的真题.现在分享出来,也写了参考答案,供大家学习借鉴.想要更多学习资料和视频请留言联系或者上海 ...
- PHP+mysql真题
PHP+mysql真题 来自<PHP程序员面试笔试宝典>,涵盖了近三年了各大型企业常考的PHP面试题,针对面试题提取出来各种面试知识也涵盖在了本书. [真题215] 按要求写出SQL实现. ...
随机推荐
- 2022-11-13 Acwing每日一题
本系列所有题目均为Acwing课的内容,发表博客既是为了学习总结,加深自己的印象,同时也是为了以后回过头来看时,不会感叹虚度光阴罢了,因此如果出现错误,欢迎大家能够指出错误,我会认真改正的.同时也希望 ...
- 2022春每日一题:Day 19
题目:吃奶酪 状压dp实现,dp[i][j]表示走过状态i,停到了j的位置的最小价值.枚举状态,起点终点,转移dp[i][j]=min{dp[i-(1<<s)][k]+dis(s,k)} ...
- 字符编码 XUTF
/* * Copyright (c) Huawei Technologies Co., Ltd. 2019-2020. All rights reserved. * Description: 上机编程 ...
- Go语言核心36讲13
我们已经讨论过了通道的基本操作以及背后的规则.今天,我再来讲讲通道的高级玩法. 首先来说说单向通道.我们在说"通道"的时候指的都是双向通道,即:既可以发也可以收的通道. 所谓单向通 ...
- Linux 使用打印机
前言 在 deepin 上打印机好使,在我的mint上不好使,简单的查看一下deepin上驱动及软件.安装上就行了. 软件及驱动 ii hpijs-ppds 3.18.12+dfsg0-2 all H ...
- 关于在linux测试启动盘命令(qemu的使用)
前言 在平时使用电脑的过程中,难免有更换系统或维护系统的需求,这个时候就需要一个启动盘来进行帮忙了,但启动盘制作是否成功没次都重启电脑是十分浪费时间的 在windows中,制作过pe盘,或者其他的系统 ...
- 【图像处理笔记】SIFT算法原理与源码分析
[图像处理笔记]总目录 0 引言 特征提取就是从图像中提取显著并且具有可区分性和可匹配性的点结构.常见的点结构一般为图像内容中的角点.交叉点.闭合区域中心点等具有一定物理结构的点,而提取点结构的一般思 ...
- Servlet面试题合集
servlet的生命周期 在创建servlet对象时,通过调用.init()方法进行初始化 通过service()方法来接收客户端的请求.根据请求方式的不同转发给对应的doGet()或doPost() ...
- mysql-DuplicateUpdate和java的threadpool的"死锁"
大家千万不要被文章的标题给迷惑了,他两在本篇文章是没有关系的, 今天给大家讲讲最近2个有意思的issue,分享一下我学到的 mysql DuplicateUpdate的用法要注意的点 java的thr ...
- windows上用vs2017静态编译onnxruntime-gpu CUDA cuDNN TensorRT的坎坷之路
因为工作业务需求的关系,需编译onnxruntime引入项目中使用,主项目exe是使用的vs2017+qt5.12. onnxruntime就不用介绍是啥了撒,在优化和加速AI机器学习推理和训练这块赫 ...