先建立表:
name:學生名
ban:班級
score:分數
1、按班級分組排序,取出分數前兩名的同學。
CREATE TABLE `student` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`name` varchar(100) DEFAULT NULL COMMENT 'name',
`ban` varchar(100) DEFAULT NULL COMMENT 'ban',
`score` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `inx_ban` (`ban`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=latin1
name:學生名
ban:班級
score:分數
1、按班級分組排序,取出分數前兩名的同學。
select t.ban,t.score,t.name from student t where 2<(select count(*) from student k where k.ban=t.ban and t.score>k.score order by k.ban desc) order by t.ban,t.score desc;
示例如下:
one 100 abin1
one 99 abin2
three 100 varyall1
three 99 varyall2
two 100 lee1
two 99 lee2
2、按組統計出來每組的所有分組,用逗號隔開select t.ban,group_concat(t.score) from student t group by t.ban
示例如下:
one 100,99,97,95,91
three 100,99,97,95,91
two 100,99,97,95,91