一、现有以下两张表:

第一张表名为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笔试真题练习的更多相关文章

  1. 网易实习笔试真题C/C++

    刚做的时候根本就没有想到解题思路,刚好看到了别人的思路,自己写了一下.里面对unordered_map及vector二维数组的建立很灵活,另外区别了一下map,unordered_map,hash_m ...

  2. 美团点评2017校招笔试真题-算法工程师A

    美团点评2017校招笔试真题-算法工程师A 1.下面哪种STL容器的实现和其它三个不一样 A. set B. deque C. multimap D. map 正确答案: B STL的容器可以分为以下 ...

  3. 美团点评2017校招笔试真题-算法工程师B

    美团点评2017校招笔试真题-算法工程师B 1.以下关于经典的k-means聚类的说法哪个是错误的? A:k-means聚类算法是全局收敛的 B:k-means的聚类结果和初始聚类中心点的选取有关 C ...

  4. 《PHP面试笔试真题库》——PHP面试的好帮手

    你好,是我琉忆. 一个文艺的PHP开发工程师. 很荣幸能够在这里带来我的第一本新书--<PHP程序员面试笔试真题库>. 一.创作过程 <PHP 程序员面试笔试真题库>是我的第三 ...

  5. 《PHP程序员面试笔试真题解析》——新书上线

    你好,是我--琉忆.很高兴可以跟你分享我的新书. 很高兴,在出版了PHP程序员面试笔试宝典后迎来了我的第二本书出版--<PHP程序员面试笔试真题解析>. 如果你是一个热爱PHP的程序员,刚 ...

  6. 笔试真题解析 ALBB-2015 算法project师实习生机试

    1.用十进制计算30!(30的阶乘),将结果转换成3进制进行表示的话,该进制下的结果末尾会有____个0. [解析] 计算N.下3进制结果末尾有多少个0,事实上就是计算3进制中的3被进位多少次,仅仅要 ...

  7. unity,C#,游戏面试笔试真题

    最开始的两家公司笔试面试题目 一家公司是学校聘请研究教育方面VR课件的公司,面试没几天,就收到了面试通过的消息,后面因为通过了另一家游戏公司而拒绝了. 另一家公司是一家游戏外企,在春熙路,当时笔试还可 ...

  8. 笔试真题解析 ALBB-2015 系统project师研发笔试题

    4)在小端序的机器中,假设 union X {     int x;     char y[4]; }; 假设 X a; a.x=0x11223344;//16进制 则:() y[0]=11 y[1] ...

  9. Java面试中笔试题——Java代码真题,这些题会做,笔试完全可拿下!

    大家好,我是上海尚学堂Java培训老师,以下这些Java笔试真题是上海尚学堂Java学员在找工作中笔试遇到的真题.现在分享出来,也写了参考答案,供大家学习借鉴.想要更多学习资料和视频请留言联系或者上海 ...

  10. PHP+mysql真题

    PHP+mysql真题 来自<PHP程序员面试笔试宝典>,涵盖了近三年了各大型企业常考的PHP面试题,针对面试题提取出来各种面试知识也涵盖在了本书. [真题215] 按要求写出SQL实现. ...

随机推荐

  1. SPPS完整版下载安装教程【博主亲测】

    SPSS全称Statistical Product and Service Solutions,是一款优秀的数据分析软件,旨在为用户提供专业的统计产品与服务解决方案.SPSS面向行业应用人员所设,被广 ...

  2. hwlog---api.go

    // Copyright(c) 2021. Huawei Technologies Co.,Ltd. All rights reserved.// Package hwlog provides the ...

  3. docker中php xdebug调试开发

    docker-compose环境来自:https://github.com/zhaojunlik...原文:http://blog.oeynet.com/post/9... 说明 在开发中,断点调试是 ...

  4. zabbix6.0安装

    一.简述 zabbix6.0 对相关软件版本要求较高,需要php7.25以上php8.0以下版本支持,若使用mysql数据库,其最低要求为mysql8.0,本此搭建采用的是使用较广的lnmp架构 za ...

  5. Pycharm下载与使用及python的基础数据类型

    1.Pycharm编辑器 1.1.下载地址 https://www.jetbrains.com/pycharm/ 1.2.Pycharm编辑器下载 1.根据自己的操作系统选择相对应的下载方式 2.尽量 ...

  6. C温故补缺(四):GDB

    gdb gdb是由GNU软件社区提供的C Debug工具 Pre 在调试前,需要先编译.c程序,且要加上-g使输出文件变得可调式 gcc test.c -g -o test 用gdb test来调试程 ...

  7. linux驱动移植

    1.1 开发前准备 1.1.1 Linux 驱动(面向对象) 1).Linux 驱动框架 思想:写驱动的时候,只提供操作硬件设备的函数接口 文件存放磁盘: open ,read ,write ,clo ...

  8. 14 STL-常用算法

    ​ 重新系统学习c++语言,并将学习过程中的知识在这里抄录.总结.沉淀.同时希望对刷到的朋友有所帮助,一起加油哦! 每一次学习都是为了追求智慧! 写在前面,本篇章主要介绍STL中常用算法. 算法主要由 ...

  9. 在实际应用中联合体union的妙用

    关键字union,又称为联合体.共用体,联合体的声明和结构体类似,但是它的行为方式又和结构体不同,这里的行为方式主要指的是其在内存中的体现,结构体中的成员每一个占据不同的内存空间,而联合体中的所有成员 ...

  10. python random模块几个常用方法

    python random模块几个常用方法 random.random()方法 random.uniform(a, b)方法 random.randint(a, b)方法 random.randran ...