sql >> Base de Datos >  >> RDS >> Oracle

Excluyendo solo un valor MIN en Oracle SQL

Para hacer esto tienes que separarlos de alguna manera; su problema actual es que los 2 puntajes más bajos son iguales, por lo que cualquier operación de (des)igualdad realizada en cualquiera de los valores trata al otro de manera idéntica.

Podría usar algo como la consulta analítica ROW_NUMBER() para identificar filas de forma única:

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 la cláusula ORDER BY está en SCORE en orden ascendente, se eliminará uno de los puntajes más bajos. Este será un valor aleatorio a menos que agregue otras condiciones de desempate al ORDEN POR.