Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Excluindo apenas um valor MIN no Oracle SQL


Para fazer isso, você precisa separá-los de alguma forma; seu problema atual é que as 2 pontuações mais baixas são as mesmas, então qualquer operação de (des)igualdade realizada em um dos valores trata o outro de forma idêntica.

Você pode usar algo como a consulta analítica ROW_NUMBER() para identificar exclusivamente as linhas:
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() :

Como a cláusula ORDER BY está em SCORE em ordem crescente, uma das pontuações mais baixas será removida. Este será um valor aleatório, a menos que você adicione outras condições de desempate ao ORDER BY.