Om dit te doen, moet je ze op de een of andere manier scheiden; uw huidige probleem is dat de 2 laagste scores hetzelfde zijn, dus elke (on)gelijkheidsbewerking die op beide waarden wordt uitgevoerd, behandelt de andere op dezelfde manier.
Je zou zoiets kunnen gebruiken als de analytische query ROW_NUMBER()
om rijen uniek te identificeren:
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()
:
Aangezien de ORDER BY-clausule in oplopende volgorde op SCORE staat, wordt een van de laagste scores verwijderd. Dit zal een willekeurige waarde zijn, tenzij u andere tie-breaker-voorwaarden toevoegt aan de ORDER BY.