Oracle
 sql >> Database >  >> RDS >> Oracle

Escluso un solo valore MIN su Oracle SQL

Per fare questo devi separarli in qualche modo; il tuo problema attuale è che i 2 punteggi più bassi sono gli stessi, quindi qualsiasi operazione di (in)uguaglianza eseguita su entrambi i valori tratta l'altro in modo identico.

Potresti usare qualcosa come la query analitica ROW_NUMBER() per identificare in modo univoco le righe:

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

Poiché la clausola ORDER BY è su SCORE in ordine crescente, uno dei punteggi più bassi verrà rimosso. Questo sarà un valore casuale a meno che tu non aggiunga altre condizioni di spareggio a ORDER BY.