sql >> Database >  >> RDS >> Oracle

Exclusief slechts één MIN-waarde op Oracle SQL

Om dit te doen, moet je ze op de een of andere manier scheiden; uw huidige probleem is dat de 2 laagste scores hetzelfde zijn, dus elke (on)gelijkheidsbewerking die op beide waarden wordt uitgevoerd, behandelt de andere op dezelfde manier.

Je zou zoiets kunnen gebruiken als de analytische query ROW_NUMBER() om rijen uniek te identificeren:

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

Aangezien de ORDER BY-clausule in oplopende volgorde op SCORE staat, wordt een van de laagste scores verwijderd. Dit zal een willekeurige waarde zijn, tenzij u andere tie-breaker-voorwaarden toevoegt aan de ORDER BY.



  1. Stel de tijdzone van de MySQL-database in op GMT

  2. SQL*Plus:Forceer het om een ​​foutcode te retourneren

  3. Postgresql vindt totale schijfruimte die door een database wordt gebruikt

  4. MySQL Aaneengesloten sequentiële rijenveld, zelfs bij verwijderen en invoegen