Per fare questo devi separarli in qualche modo; il tuo problema attuale è che i 2 punteggi più bassi sono gli stessi, quindi qualsiasi operazione di (in)uguaglianza eseguita su entrambi i valori tratta l'altro in modo identico.
Potresti usare qualcosa come la query analitica ROW_NUMBER()
per identificare in modo univoco le righe:
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()
:
Poiché la clausola ORDER BY è su SCORE in ordine crescente, uno dei punteggi più bassi verrà rimosso. Questo sarà un valore casuale a meno che tu non aggiunga altre condizioni di spareggio a ORDER BY.