Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Ausschließlich nur eines MIN-Werts in Oracle SQL

Dazu müssen Sie sie irgendwie trennen; Ihr aktuelles Problem ist, dass die beiden niedrigsten Punktzahlen gleich sind, sodass jede (Un-) Gleichheitsoperation, die an beiden Werten durchgeführt wird, die andere identisch behandelt.

Sie könnten so etwas wie die analytische Abfrage ROW_NUMBER() um Zeilen eindeutig zu identifizieren:

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

Da die ORDER BY-Klausel auf SCORE in aufsteigender Reihenfolge steht, wird eine der niedrigsten Punktzahlen entfernt. Dies ist ein zufälliger Wert, es sei denn, Sie fügen andere Tie-Breaker-Bedingungen zu ORDER BY hinzu.