You need to normalise your data.
Rule 1: Remove repeating groups of data.
user1 and user 2 are being repeated and so they should be removed from the table. Since the criteria1 and criteria2 scores are specific to the user they will go with the user. Hence you would get:
Code:
username criteria1 criteria2
user1 0 0
user2 0 0
Now if you want to display the criteria2 scores then the following will help:
Code:
SELECT username criteria2 from ranking ORDER BY criteria2 DESC
Without knowing the formula behind the criteria calculations it is difficult to say what would be the best way to calculate them. However, I would expect that the best way would be to do them as a batch job and then each time a user logs in to update it (if appropriate).