Pour ce faire, vous devez les séparer d'une manière ou d'une autre; votre problème actuel est que les 2 scores les plus bas sont les mêmes, de sorte que toute opération d'(in)égalité effectuée sur l'une ou l'autre des valeurs traite l'autre de manière identique.
Vous pouvez utiliser quelque chose comme la requête analytique ROW_NUMBER()
pour identifier les lignes de manière unique :
select id, sum(score) / count(score) as score
from ( select id, score, row_number() over (order by score) as score_rank
from gamescore
where gameno = 1
)
where score_rank <> 1
group by id
ROW_NUMBER()
:
Comme la clause ORDER BY est sur SCORE dans l'ordre croissant, l'un des scores les plus bas sera supprimé. Ce sera une valeur aléatoire à moins que vous n'ajoutiez d'autres conditions de départage à ORDER BY.