add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
create table signin(username varchar(50),class int);

insert into signin values('aaa', 1);
insert into signin values('aaa', 1);
insert into signin values('bbb', 1);
insert into signin values('bbb', 1);
insert into signin values('ccc', 1);
insert into signin values('ddd', 2);
insert into signin values('ddd', 2);
insert into signin values('eee', 2);
select username,class,total
from
(
select username,class,count(*) total ,
@rn := IF(@prev = class, @rn + 1, 1) AS rn,
@prev := class
from signin
JOIN (SELECT @prev := NULL, @rn := 0) AS vars
group by class,username
order by class,username,count(*) desc
)t
where rn<=2
username class total
aaa 1 2
bbb 1 2
ddd 2 2
eee 2 1