Aby to zrobić, musisz je jakoś oddzielić; Twoim obecnym problemem jest to, że 2 najniższe wyniki są takie same, więc każda operacja (nie)równości wykonana na jednej wartości traktuje drugą identycznie.
Możesz użyć czegoś takiego jak zapytanie analityczne ROW_NUMBER()
aby jednoznacznie zidentyfikować wiersze:
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()
:
Ponieważ klauzula ORDER BY znajduje się na SCORE w kolejności rosnącej, jeden z najniższych punktów zostanie usunięty. Będzie to wartość losowa, chyba że dodasz inne warunki rozstrzygania remisów do ORDER BY.