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;

最新文章

  1. Day3-python基础3
  2. codeforces 723E (欧拉回路)
  3. Java多线程15:Queue、BlockingQueue以及利用BlockingQueue实现生产者/消费者模型
  4. Qt之QHeaderView添加复选框
  5. 聊聊Dataguard的三种保护模式实验(上)
  6. MongDB主从复制、复制集
  7. Java 正则提取数字串
  8. Visual Studio 2015 Professional 破解
  9. Java中一个方法只被一个线程调用一次
  10. 高阶函数,柯里化,sort排序
  11. pt-stalk
  12. [已解决]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
  13. 005_解决pip国外安装源慢的问题
  14. luogu P2051 [AHOI2009]中国象棋
  15. react跳转url,跳转外链,新页面打开页面
  16. cef研究
  17. 快速安装Docker
  18. 解题:BJOI 2006 狼抓兔子
  19. spring中事务配置
  20. CentOS6.4 配置Tengine(转)

热门文章

  1. 20+ Docs and Guides for Front-end Developers (No. 5)
  2. 20155311高梓云补交的Mypc课下实践
  3. 20155325 2016-2017-2 《Java程序设计》第4周学习总结
  4. 思维水题 poj1852
  5. 【转载】Direct3D基础知识
  6. day2 Opencv + image
  7. bzoj4998 星球联盟
  8. SOAPUI参数中xml中CDATA包含问题
  9. 详解UML图之类图
  10. Maven学习(一)-----Maven安装配置总结