想要查询数据表中的前几名该怎么实现?看这篇文章吧

news2024/11/26 13:29:23

一. 需求分析

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

为了方便给大家演示,壹哥先准备如下三个表:学生表、科目表、成绩表。

1. 学生表(student)

2. 科目表(subject)

3. 成绩表(score)

现在如果我们想要查询出每门课程,前三名同学的姓名学号科目成绩等信息这该如何查询实现? 

二. 具体实现

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

1. 先连接查询

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

SELECT * FROM score s1 LEFT JOIN score s2 
ON s1.subject_id = s2.subject_id AND s2.score > s1.score

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

2. 再分组过滤

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

SELECT s1.student_id, s1.subject_id FROM score s1 
LEFT JOIN score s2 ON s1.subject_id = s2.subject_id 
AND s2.score > s1.score 
GROUP BY s1.student_id, s1.subject_id 
HAVING count(*) <=2 
ORDER BY s1.subject_id

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

现在大家可以思考另一个问题,如果是让你查询第2到第5名同学该怎么办呢?请持续关注壹哥,我会持续为大家带来更多的技术干货。如果大家有任何问题,都可以在留言区留言,我会及时给大家回复哦。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/90235.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【深度学习】Tensorflow、MindSpore框架介绍及张量算子操作实战(超详细 附源码)

一、Tensorflow、MindSpore Google公司于2015年开源了深度学习框架TensorFlow&#xff0c;推动了深度学习的发展&#xff0c;得到了广泛应用&#xff0c;用户数量庞大。 华为公司于2020年开源了自己的深度学习框架MindSpore&#xff0c;现处于快速发展中。 TensorFlow2深度学…

直播 | 新一代极速云原生湖仓的技术内核,StarRocks PMC 今天下午为你揭秘!

12 月 14-16 日&#xff0c;第 13 届中国数据库技术大会&#xff08;DTCC 2022&#xff09;将在线上隆重召开。本届大会重点围绕云原生数据库、分布式数据库、时序数据库、图数据技术、实时数仓技术与应用实践、金融业数据库应用实践等内容展开分享和探讨。 12 月 14 日 14:20…

ESP32 与 ESP32-CAM 的关系

ESP32 与 ESP32-CAM 的关系 以下分别介绍 ESP32 与 ESP32-CAM&#xff0c;两者之间的关系可以简单用下表来说明&#xff1a; ESP32ESP32-CAM开发公司乐鑫信息科技安信可科技模块关系ESP32 系列 ( 共有ESP32-S 系列、ESP32-C 系列与ESP32 系列)ESP32 系列中的ESP32-WROVER 模组…

(九)Java网络编程无冕之王-这回把大名鼎鼎的Netty框架一网打尽!

引言 现如今的开发环境中&#xff0c;分布式/微服务架构大行其道&#xff0c;而分布式/微服务的根基在于网络编程&#xff0c;而Netty恰恰是Java网络编程领域的无冕之王。Netty这个框架相信大家定然听说过&#xff0c;其在Java网络编程中的地位&#xff0c;好比JavaEE中的Sprin…

Java中的二维数组

一、介绍 应用场景&#xff1a;比如我们要开发一个五子棋游戏&#xff0c;期盼就是需要用二维数组来表示。即一维数组的每一个元素也是数组。 例子&#xff1a;请用二维数组输出如下图形&#xff1a; 000000 001000 020300 000000 package com.hspedu.array;public class Tw…

Java做UI自动化和app自动化中动态代理@FindBy的工作原理【杭州多测师_王sir】【杭州多测师】...

Java做UI自动化和app自动化中动态代理FindBy的工作原理一、背景简介由于Selenium框架采用PageObject设计模式让测试代码与被测页面对象代码分离&#xff0c;因而提供了不少很方便的注解来达到目的&#xff0c;其中有一个注解就是FindBy。在使用中&#xff0c;只要通过在field中…

ruoyi 在页面上增加一个显示字段(数据库增加字段,页面后端处理)

例如&#xff0c;上图所示&#xff0c; 【用户工资表】现有字段为用户id&#xff0c;用户工资&#xff0c;生效时间&#xff0c;备注信息 这些字段也就是你设计数据库时&#xff0c;数据库工资表字段 &#xff0c;现在&#xff0c;要让显示这个页面&#xff0c;增加一个用户姓…

Flutter for Web 首次首屏优化——JS 分片优化

作者&#xff1a;马坤乐(坤吾) Flutter for Web&#xff08;FFW&#xff09;从 2021 年发布至今&#xff0c;在国内外互联网公司已经得到较多的应用。作为 Flutter 技术在 Web 领域的有力扩充&#xff0c;FFW 可以让熟悉 Flutter 的客户端同学直接上手写 H5&#xff0c;复用 A…

2023年有哪些半入耳蓝牙耳机?半入耳式蓝牙耳机排行榜

工作生活中最常用的真无线蓝牙耳机来说&#xff0c;各式各样、价格悬殊的产品&#xff0c;很多人不知道该如何选择&#xff0c;半入耳式的佩戴舒适度一直都是公认的好&#xff0c;下面小编分享几个性能表现、续航时间都非常优秀的半入耳式蓝牙耳机 TOP1:南卡小音舱蓝牙耳机 音…

Java IO流补充(字符流)

字符 那么在Java中的字符用char来表示&#xff0c;char存储字符。Java使用Unicode来表示字符。Unicode可以表示在所有人类语言中找到的所有字符。Java char是16位类型 字符的范围是 0 ~ 65536 ,没有负字符。字符可以是文字、字母数字、符号等等。 字符流 尽管Java中字节流的…

【Spring】——17、@Resource注解和@Inject注解?

&#x1f4eb;作者简介&#xff1a;zhz小白 公众号&#xff1a;小白的Java进阶之路 专业技能&#xff1a; 1、Java基础&#xff0c;并精通多线程的开发&#xff0c;熟悉JVM原理 2、熟悉Java基础&#xff0c;并精通多线程的开发&#xff0c;熟悉JVM原理&#xff0c;具备⼀定的线…

使用 systemd 管理多个 MySQL 服务器实例

使用 systemd 管理多个 MySQL 服务器实例 文章目录使用 systemd 管理多个 MySQL 服务器实例先决条件支持 systemd 的操作系统每个实例配置独立的目录和参数部署多实例环境1. 配置选项文件使用 systemd 管理 MySQL 多实例总结本文仅讲述使用 RPM 包安装的多个 MySQL 实例如何使用…

IronXL 2022.12.10926 Crack

关于适用于 .NET 的 IronXL 在 C# 中阅读和编辑 Excel 电子表格&#xff0c;无需 MS Office 或 Excel Interop。 IronXL for .NET 允许开发人员在 .NET 应用程序和网站中读取、生成和编辑 Excel&#xff08;和其他电子表格文件&#xff09;。您可以读取和编辑 XLS/XLSX/CSV/TSV…

操作系统-内存管理(内存的分配与回收(非连续分配方式,基本分页存储管理方式,基本地址变换机构))

文章目录1. 基本分页存储管理基本地址变换机构1. 基本分页存储管理 分页存储&#xff1a; 将内存空间分为一个个大小相等的分区&#xff08;eg&#xff1a;每个分区4KB&#xff09;&#xff0c;每个分区就是一个页框 每个页框有一个编号&#xff0c;即页框号&#xff0c;页框…

C++ 重要笔记与题 (循环-嵌套-数组)

文章目录十 循环10.1 字符与循环10.2 数与循环十一 循环嵌套——不拘一格11.2数学与循环——脉脉相通十 循环 10.1 字符与循环 题1.1&#xff1a;循环输出26个字母&#xff0c;从A-Z。 for(char i A;i<Z;i){cout<<i<<" ";}题1.2&#xff1a;输入某…

第二证券|定增市场回暖 机构争抢优质项目

今年下半年以来&#xff0c;定增商场持续回暖。最新数据显现&#xff0c;到12月13日&#xff0c;下半年以来A股商场实施定增计划的上市公司近200家&#xff0c;比较上半年的133家显着增加。持续回暖的定增商场吸引了不少组织的目光&#xff0c;不只百亿级私募活跃捡拾筹码&…

大学生个人博客网页设计模板 学生个人博客网页成品 简单个人网站作品下载 静态HTML CSS个人网页作业源代码

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

[附源码]Python计算机毕业设计SSM基于java网上心理咨询系统数据分析(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

docke+gitlab+jenkins+springboot

安装Gitlab 开放防火墙端口80和配置映射文件夹 firewall-cmd --zonepublic --add-port80/tcp --permanent firewall-cmd --reload mkdir -p /docker_data/gitlab/{data,logs,config}启动Gitlab容器&#xff08;启动容器之前确保80&#xff0c;443端口没用被占用&#xff0c;被…