sql 一段时间内相同的只统计一次_SQL面试题

2e227dd905a333879a0c503532668b8a.png

本章通过实战练习,演示如何进行SQL常见查询类型的应用。

一、简单查询

创建学校数据库的四张表:

fe0303fa71ba509e5ca841988a68f5b5.png

在navicat图形端创建四张表结构如下:

eb028bf8eb0129b693568cc4ecfbe8ef.png

d82647867b3a475069b0c7d81c77d0d4.png

29972f7485c84f79633f6a92a74fa2ba.png

1caaf9fd9aaa255896847cf1f4d7c220.png

导入数据之后结果如下:

5f0418bcca85f9dd63d1c6e7e1a3ced4.png

练习:

1、查询姓“猴”的学生名单。
2、查询姓名中最后一个字是“猴”的学生名单。
3、查询姓名中带“猴”的学生名单。

SQL语句:

38151d04532e8b211688cb8bd0d3c93b.png

7d652c2f6d5ad660066080f4c863bae0.png

7d56ae8f84418ee2b20089e5f0bd58bd.png

结果:

63730565c54423ee9b2c07918c90e3f3.png

2caebaf314a4c1c212c9bf018509ef1e.png

53adfff8269ea748568be306acd9dce6.png
4、查询姓“孟”老师的个数

c64e4a71ff1d6d4e6e7d4500b77be343.png

结果:

dc81e6a5a6eebe0d68261dce17aba769.png

二、汇总分析

1、查询课程编号为‘0002’的总成绩
2、查询选了课程的学生人数

1、SQL语句:

c195a1314b451acd85068b403b7d2892.png

结果:

0e7cc5d470cabd42ea5be952eab3d378.png

2、SQL语句:

335c7c8dfb7e31ced98d3e68263749b8.png

结果:

d305b1d71c2bd3e1370210f04e4fe8fb.png

分组练习:

1、查询各科成绩最高和最低分
2、查询每门课程被选修的学生数
3、查询男生、女生人数

1、SQL语句:

45388a9fb884234c7b202073d7b47b59.png

结果:

4ba9df68864d313bb0bec9c4d9f6b422.png

2、SQL语句:

b74e603a23ee87684db3a0773c027230.png

结果:

dd6bf5701e423fc5fd5f2bdc6e702172.png

3、SQL语句:

d28d3458e9b514ee13b841da7add16f7.png

结果:

b1374b2e79f9408c923f5bf52dc78100.png

分组结果的条件:

1、查询平均成绩大于60分学生的学号和平均成绩。
2、查询至少选修两门课程的学生学号。
3、查询同名同性学生名单并统计同名人数。
4、查询不及格的课程并按课程号从大到小排列
5、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列。
6、检索课程编号为“0004”且分数小于60的学生学号,结果按分数降序排列。
7、统计每门课程的学生选修人数(超过2人的课程才统计),要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。

1、SQL语句:

5eb47bcbd70ec91c20c264c9a2d64c98.png

结果:

e6e002ef77496ea1048f9c70f48aa0c4.png

2、SQL语句:

361bbf58532247b471355ee5ccf2072f.png

结果:

aa26e3870f845419e1058815e2386810.png

3、SQL语句:

c80aa7ad2b996f81fc9b6ce5bcad9459.png

结果:

8521a8c49a1fbe0984441c72cc48fcea.png

4、SQL语句:

e32618789c5a42149b6d5ec1892eecf2.png

结果:

8699e32ef8ccb477f9e872747157ec01.png

5、SQL语句:

8470f45986b0db7449a0a2064c7fe2e4.png

结果:

251a94b6b84fe509b5761b959c362ca0.png

6、SQL语句:

4e5d6f34e37bbf773257169b591dd155.png

结果:

c8c313fcd7761950b79b31b2c34d0adb.png

7、SQL语句:

04ac0761d0b72212bd002bf3b6aeb09b.png

结果:

386a45db31f966b2671520a6bf8077dd.png

三、复杂查询

1、查询所有课程成绩小于60分学生的学号、姓名。

7fda0680f5869e527bc2c747294a4e46.png

结果:

0a85020038c39a6e21ddf8c0f96511c4.png
2、查询没有学全所有课的学生的学号、姓名

SQL语句:

f657a44fbe6ec927efb1c60a6264376e.png

结果:

4cac35882c99270c7b7bd31aa0742b2a.png
3、查询只选修了两门课程的全部学生的学号和姓名

SQL语句:

899a3f8cef74082ed3c04638e7c6ee05.png

结果:

d5644a90fa3a68a69fc1e6c10a7731ad.png
4、1990年出生的学生名单

fd9dc9f469ee011a08f3d58467caeaed.png

3c2538e9389f7aab486a9bdd397546fa.png
5、查询各科成绩前两名的记录

四、多表查询

259d3f9ecff2dfa54c0c60fa19212c79.png
学生表和近视表,请问不是近视眼的学生都有谁?

476d7d3faf02cf72b40a83ffd67ec81e.png

37836399543fc48d99f5c064eb310892.png

还有一种做法:

c961d478f33955c3d25fbf9127406d24.png

也能得到如下结果:

942c8994d44dc6c225b0cd43ee7904fd.png
2、根据顾客姓名表和购买记录表,查找所有从不订购任何东西的客户

a94fcb3250f603e21304883406aeaa95.png

SQL语句:

396bacbd0f6a76155a5a18cee67f4759.png

结果:

851fd5853c34d93b747a4f3006cce4d0.png
查询所有学生的学号、姓名、选课数、总成绩

dc6ba2675f81aad4a5136605cdeae29d.png

274e5e5d3d9b0bbd6af99564bb39897f.png
查询平均成绩大于85的所有学生的学号、姓名和平均成绩

2a565031656167a3e80ba95f391ad11a.png

05bb2709a40d0c283320cba1c192d07d.png
查询学生的选课情况、学号、姓名、课程号、课程名称

5e9759a01f5549a88143e8da8dc74c13.png

f45e27174e3c07fae18ef7681a9cf618.png
查出每门课程的及格人数以及不及格人数

56521af63a1a270952c7b68e348f5209.png

8354cae8f5603f10a0dd4efef434cad7.png
使用分段【100-85】,【85-70】,【70-60】,【<60】来统计各科成绩,分别统计:各分段人数,课程号和课程名称

22fe62d4c651f0c5f165173015e82312.png

b9eb387a0818c1abc4e0dd71fb65ca8c.png
查询课程编号为0003且课程成绩在80分以上的学生的学号和姓名

dbeb7daaf3157f61a56db3bf4e58fbbc.png

fd4f61a0b77e7ee80c686194119c27f2.png
下面是学生的成绩表,表名为score,列名:学号、课程号、成绩

fa5d77eed93a40d26f51f02809be3f5a.png
使用SQL实现将该表行转列为下面的表结构:

92e9ba8d9456b786dcd727f92cc14309.png

SQL语句:这道题的意思是,从学生表中查找出每个学生每门课的成绩。结果按照学号分组。

a11b021c843970c412b9e44c0d518e9d.png

aa90b2dbe3dc67a90eb2e0176e6d0a07.png

结论:本篇文章采用实战形式,系统整理了常见SQL查询解题,主要包含简单查询、汇总分析、复杂查询和多表查询。SQL熟练度随着练习增多,而逐渐提升。另外要总结常见题目的解题思路。本章有一个遗憾,就是关于分组并计算每组里面topN这个问题,还没有找到好的解题思路,留作后续继续探讨。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值