Rather than storing the Rank in your table and selecting it out try to calculate it on the fly. Try something like the following:
SELECT regno,
name,
dept,
gpa
@curRank := @curRank + 1 AS rank
FROM leaderboard, (SELECT @curRank := 0) r
ORDER BY gpa;