千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > SQL技术干货:带你实现查询数据库表中的前几名

SQL技术干货:带你实现查询数据库表中的前几名

来源:千锋教育
发布人:syq
时间: 2022-09-29 11:32:00 1664422320

  一. 需求分析

  我们在学习数据库查询时,经常会遇到关于分组和聚合函数的查询,比如查询每门课程的最高分,每位同学的平均分,其实这些都是比较一般的问题。但如果遇到查询每门课程成绩的前几名问题,就会变的很棘手,今天小编给你唠唠这方面的问题。

  比如我们现在有如下三个表:学生表、科目表、成绩表,分别如下:

  1. 学生表(student):

6 (1)

  2. 科目表(subject):

7 (1)

  3. 成绩表(score):

8 (1)

  现在如果我们需要获取每门科目前三名同学的姓名、学号、科目、成绩等信息,这该如何查询实现呢?

  二. 具体实现

  其实遇到这种问题,并不单纯是在考察我们的SQL水平,同时也是在考察我们的思考能力,我们得学会思考如何进行查询,如何进行分组,如何进行条件过滤。

  1. 先连接查询

  首先我们可以根据科目和成绩,来查询同一科目中分数较高的数据。

9

  这样查询到的就是一个成绩记录,同一个科目全部比他分数高的成绩记录就是被关联查询出来。这里为了让第一名也查询出来,我们可以使用外连接进行查询。

10 (1)

  2. 再分组过滤

  然后我们可以根据学生和科目再进行分组,查询出比这个学生该门科目高的学生成绩条数是多少,如果条数小于3,这样就得到了前三名。

13

12 (1)

  如果出现了并列的情况,也会被查询出来。

  现在你可以思考一个问题,如果是让你查询第2到第5名同学呢?

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT