MySQL 分组排序问题
2024-08-28 01:37:10
SQL好久不写了,有些生疏了,一个分组排序问题想了快半天,整理下。
学生表
CREATE TABLE `t_student` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`name` varchar(128) DEFAULT NULL COMMENT '学生名称',
`score` varchar(128) DEFAULT NULL COMMENT '分数',
`class_id` varchar(128) DEFAULT NULL COMMENT '班级ID',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='学生表';
班级表
CREATE TABLE `t_class` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`name` varchar(128) DEFAULT NULL COMMENT '班级名称',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='班级表';
问题:查询出每个班级前三名的信息?
首先,如何查询每个班级前三名的SQL呢?
select * from t_student a
where (select count(1) from t_student where class_id = a.class_id and id <> a.id and score > a.score) < 3
完整SQL如下
select b.name,b.score,c.name from t_student b
join t_class c on b.class_id=c.id
where b.id in
(select id from t_student a
where (select count(1) from t_student where class_id = a.class_id and id <> a.id and score > a.score) < 3)
group by b.class_id,b.id
order by b.class_id ,score desc;
最新文章
- Day3-python基础3
- codeforces 723E (欧拉回路)
- Java多线程15:Queue、BlockingQueue以及利用BlockingQueue实现生产者/消费者模型
- Qt之QHeaderView添加复选框
- 聊聊Dataguard的三种保护模式实验(上)
- MongDB主从复制、复制集
- Java 正则提取数字串
- Visual Studio 2015 Professional 破解
- Java中一个方法只被一个线程调用一次
- 高阶函数,柯里化,sort排序
- pt-stalk
- [已解决]This dependency was not found: * common/stylus/index.styl in ./src/main.js To install it, you can run: npm install --save common/stylus/index.styl
- 005_解决pip国外安装源慢的问题
- luogu P2051 [AHOI2009]中国象棋
- react跳转url,跳转外链,新页面打开页面
- cef研究
- 快速安装Docker
- 解题:BJOI 2006 狼抓兔子
- spring中事务配置
- CentOS6.4 配置Tengine(转)