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