Oracle
 sql >> Base de données >  >> RDS >> Oracle

Exclure une seule valeur MIN sur Oracle SQL

Pour ce faire, vous devez les séparer d'une manière ou d'une autre; votre problème actuel est que les 2 scores les plus bas sont les mêmes, de sorte que toute opération d'(in)égalité effectuée sur l'une ou l'autre des valeurs traite l'autre de manière identique.

Vous pouvez utiliser quelque chose comme la requête analytique ROW_NUMBER() pour identifier les lignes de manière unique :

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() :

Comme la clause ORDER BY est sur SCORE dans l'ordre croissant, l'un des scores les plus bas sera supprimé. Ce sera une valeur aléatoire à moins que vous n'ajoutiez d'autres conditions de départage à ORDER BY.