За да направите това, трябва да ги разделите по някакъв начин; текущият ви проблем е, че 2-те най-ниски резултата са еднакви, така че всяка операция за (не)равенство, извършена върху една от двете стойности, третира другата идентично.
Можете да използвате нещо като аналитичната заявка ROW_NUMBER()
за уникално идентифициране на редове:
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()
:
Тъй като клаузата ORDER BY е на SCORE във възходящ ред, един от най-ниските резултати ще бъде премахнат. Това ще бъде произволна стойност, освен ако не добавите други решаващи условия към ORDER BY.