sql分组之后取最小值行的记录
比如:一个表中存储了所有班级所有学生的英语、数学、语文的成绩。
表结构如下:
CREATE TABLE `student_grades` (
`id` bigint(20) unsigned NOT NULL DEFAULT '0', -- 主键
`ver` mediumint(8) unsigned NOT NULL DEFAULT '0', -- 乐观锁版本号
`classid` bigint(20) unsigned NOT NULL DEFAULT '0', -- 班级ID
`studentid` varchar(50) NOT NULL DEFAULT '', -- 学生ID
`subjectid` tinyint(2) unsigned NOT NULL DEFAULT '0', -- 学科ID
`grade` tinyint(3) unsigned NOT NULL DEFAULT '0', -- 分数
`ctime` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', -- 创建时间
`utime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 更新时间
PRIMARY KEY (`id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
如何求出每个班每个科目的最高分?
sql如下:
select max(grade), classid, subjectid from student_grade group by classid, subjectid ;