are you looking for unique scores...are you going to be doing any other analysis, averages, counts etc of the data? As they will require a different solution.
If I had to do this report, I would:
1 list/group the scores from high to low, unlike the low to high that you have.
2 2nd grouping by userid
3 dynamically suppress scores for users already printed.
Section Expert/suppress/x-1 button:
shared stringvar used;
local booleanvar print := not (instr(used, "|" + {table.userid} + "|") > 0);
if print then
used := used + "|" + {table.userid} + "|";
print
that should give you a good start...at least that is what I would start with