mysql获取分组后的最大值的一组数据,并排序

笔试问题:将下面的班级表中,按班级分组,得出每个班级最高分的学生信息,并由高到低排序
第一步:创建测试表格

CREATE TABLE `t_student` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `class` varchar(50) DEFAULT NULL,
  `achievement` int(5) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4

第二步:添加测试数据

insert  into `t_student`(`id`,`name`,`class`,`achievement`) values 
(1,'王五','一班',98),
(2,'李四','二班',99),
(3,'张三','二班',95),
(4,'赵二','一班',97),
(5,'齐一','一班',94);

第三步:写查询语句

SELECT t1.* FROM t_student t1 
INNER JOIN (SELECT class,MAX(achievement) achievement FROM t_student GROUP BY class) t2 ON t1.class = t2.class 
AND t1.achievement = t2.achievement ORDER BY t1.achievement DESC#降序由高到低

更复杂的sql语句可进QQ群咨询:920199935

Guess you like

Origin blog.csdn.net/huo_wa/article/details/117734352