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 ;