select 
    tb.device_id, 
    tb.university, 
    tb.gpa
from (
    select 
        ta.device_id,
        ta.university,
        ta.gpa,
        row_number() over (partition by university order by gpa) as rk
    from 
        user_profile as ta
) as tb
where 
    tb.rk = 1
order by 
    tb.university
;