Для этого часто используются оконные функции:
select t.*
from (select t.*, row_number() over (partition by total order by total) as seqnum
from tempview t -- or whatever your logic is here
) t
where seqnum <= 2;
Конечно, оконные функции доступны только в самых последних версиях SQLite.
В старых версиях SQLite это больно, но это должно работать:
select t.*
from tempview t
where t.name in (select t2.name
from tempview t2
where t2.total = t.total
limit 2
);
Предполагается, что имена не повторяются для данного total
.