When storing the data in the database try and store it with as much detail as possible. for example if you have the data here is why
create table #ranks
( studentid int ,
[subject] varchar(20),
Score decimal(5,2),
Rounded as round(Score,0))
Go
insert into #ranks
select 1 , 'Math' , 85.67 union all
select 1 , 'English' , 77.64 union all
select 2 , 'Math' , 85.65 union all
select 2 , 'English' , 77.68 union all
select 3 , 'Math' , 99.49 union all
select 3 , 'English' , 77.50
GO
select Studentid , sum(Score) , Sum(Rounded)
from #ranks
group by Studentid
-- Notice how Student 1 and 2 share the same Score if rounded , now who gets first rank?