Dazu müssen Sie sie irgendwie trennen; Ihr aktuelles Problem ist, dass die beiden niedrigsten Punktzahlen gleich sind, sodass jede (Un-) Gleichheitsoperation, die an beiden Werten durchgeführt wird, die andere identisch behandelt.
Sie könnten so etwas wie die analytische Abfrage ROW_NUMBER()
um Zeilen eindeutig zu identifizieren:
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()
:
Da die ORDER BY-Klausel auf SCORE in aufsteigender Reihenfolge steht, wird eine der niedrigsten Punktzahlen entfernt. Dies ist ein zufälliger Wert, es sei denn, Sie fügen andere Tie-Breaker-Bedingungen zu ORDER BY hinzu.