1、 创建表

drop table student;
create table student(id varchar(20),-- 编号class varchar(20),-- 年级score int-- 分数
);

2、插入数据

delete from student;
insert student values('1','一年级',82);
insert student values('2','一年级',95);
insert student values('3','一年级',82);
insert student values('4','一年级',40);
insert student values('5','一年级',20);
insert student values('6','二年级',95);
insert student values('7','二年级',40);
insert student values('8','二年级',3);
insert student values('9','二年级',60);
insert student values('10','二年级',10);
insert student values('11','三年级',70);
insert student values('12','三年级',60);
insert student values('13','三年级',40);
insert student values('14','三年级',90);
insert student values('15','三年级',20);

3、第一种方法

如果多人并列第一或者第二,全部可以查出来

SELECT*
FROMstudent a
WHERE( SELECT count(*) FROM student b WHERE b.class = a.class AND a.score < b.score )< 3
ORDER BYa.class,a.score DESC;

注意如果查前2名,第二名的有两个,有并列

SELECT*
FROMstudent a
WHERE( SELECT count(*) FROM student b WHERE b.class = a.class AND a.score < b.score )< 2
ORDER BYa.class,a.score DESC;

4、第二种方法

SELECTa.*,COUNT( a.id )
FROMstudent a,student b
WHEREb.class = a.class AND a.score <= b.score
GROUP BYa.id,a.class,a.score
HAVINGCOUNT( a.id )<4
ORDER BYa.class,a.score DESC;

如果查前两名则无法查询出分数为82 的,无法查询出并列的

SELECTa.*,COUNT( a.id )
FROMstudent a,student b
WHEREb.class = a.class AND a.score <= b.score
GROUP BYa.id,a.class,a.score
HAVINGCOUNT( a.id )<3
ORDER BYa.class,a.score DESC;

5、第三种方法

结果同第一种方法,不再演示结果

SELECTa.*,COUNT( a.id )
FROMstudent aLEFT JOIN student b ON b.class = a.class
WHEREa.score >= b.score
GROUP BYa.id,a.class,a.score
HAVINGCOUNT( a.id )>3
ORDER BYa.class,a.score DESC;

其中>3 这里,判断首先根据sql (去掉HAVING COUNT( a.id )>3 )后,选择COUNT( a.id )>3 最大的三个数字,找到第四大的后,大于该数字即可

6、每门科目的前三名

其实类似该种方法,不在赘述

mysql实现分组查询每个班级的前三名、每门课程的前三名相关推荐

  1. mysql实现分组查询每个班级的前三名

    mysql实现分组查询每个班级的前三名set character_set_server = utf8mb4 ; DROP TABLE IF EXISTS student;CREATE TABLE IF ...

  2. mysql筛选班级排名_mysql实现分组查询每个班级的前三名

    1.创建表 drop table student; create table student( id varchar(20),-- 编号 class varchar(20),-- 年级 score i ...

  3. mysql 名字分组查询id_mysql进阶5:分组查询

    /*语法: select 分组函数 列(要求出现在group by的后面) from 表 [where 筛选条件] group by 分组的列表 [order by 子句] 注意:查询列表必须特殊,要 ...

  4. MySQL 基础 ———— 分组查询

    引言 承接上一篇<MySQL 基础 ----高频函数总结>,本篇单独针对分组查询进行简单的总结和归纳,并为后续更为复杂的DQL 语句做好铺垫. 查询语句: SELECT AVG(salar ...

  5. Mysql之分组查询

    学习目标 能够写出分组查询的SQL语句 1. 分组查询介绍 分组查询就是将查询结果按照指定字段进行分组,字段中数据相等的分为一组. 分组查询基本的语法格式如下: GROUP BY 列名 [HAVING ...

  6. MySQL 数据库 分组查询

    分组查询:包括单列分组查询和多列分组查询. group by 单列分组查询 示例: 1.根据科目分组,查询每个科目的平均分 2.根据班级分组,查询每个班级成绩总数 3.根据班级分组,查询每个班级的最低 ...

  7. MySQL DQL分组查询、条件查询、子查询

    1.分组函数 1.分组函数又称统计函数.组函数.聚合函数. 2.功能:用作统计使用 3.分类:sum求和.avg平均值.max最大值.min最小值.count计数(非空). /* 分组函数:统计函数. ...

  8. Mysql:分组查询

    分组查询 1.分组查询是对数据按照某个或多个字段进行分组,在MYSQL中使用GROUP BY关键字对数据进行分组 2.GROUP BY关键字可以将查询结果按照某个字段或多个字段进行分组.字段中值相等的 ...

  9. MySQL SQL分组查询

    一.group by 子句 语法: select 分组函数,列(要求出现在group by)的后面 from 表 [where 筛选条件] group by 分组的列表 [order by 子句] 注 ...

  10. MySQL数据库分组查询group by(having)

    1. 分组查询介绍 分组查询就是将查询结果按照指定字段进行分组,字段中数据相等的分为一组. 分组查询基本的语法格式如下: GROUP BY 列名 [HAVING 条件表达式] [WITH ROLLUP ...

最新文章

  1. SectionIndexer中的getSectionForPosition()与getPositionForSection()
  2. matlab高级图形设计实训上机答案,Matlab实验第一次实验答案[共8页]
  3. wxWidgets:将带有语法高亮和折叠的自定义词法分析器添加到 WxStyledTextCtrl
  4. 使用GitHub构建个人博客网站
  5. SQL基础---SQL AND OR 运算符
  6. asp网络编程:用ASP构建音乐服务器的方法
  7. AWS Toolkit for Eclipse环境配置
  8. npy/npz/pkl/csv长字符串存储
  9. 量化视角下的基金定投策略
  10. English_do
  11. 全球及中国空气净化器市场销售模式与营销策略前景咨询报告2022版
  12. JAVA 枚举类型 根据代码得到中文
  13. 大数据学习之Flink环境搭建+提交任务方式
  14. 微信小程序直播如何开发
  15. cisco 3550
  16. 前端开发:自定义搜索框(含联想搜索)
  17. ffmpeg使用转码学习
  18. 室内定位指纹采集系统-Android WIFI版本
  19. js去掉前后空格的函数_StudyNote -- JS原型 amp; 原型链
  20. 果蝇优化算法 C语言,果蝇优化算法(FOA)

热门文章

  1. 研发管理02----嵌入式硬件设计流程之完善
  2. C#office的0x8002801D或者0x80029C4A问题
  3. 已知基因名,如何在genbank中查询基因序列?
  4. Adjoint of linear operator
  5. 修改win10服务器登录密码,玩转Win10密码基础篇:设置修改系统登录密码
  6. 银行卡四要素实名验证,你知道多少?
  7. error: Could not load host key: /etc/ssh/ssh_host_dsa_key
  8. 24位掩码和30个掩码_高级ds位掩码和dp的问题
  9. Hermite多项式正交性证明
  10. 开源VOSK引擎免费语音转文字部署