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

Ekskluderer kun én MIN-værdi på Oracle SQL

For at gøre dette skal du adskille dem på en eller anden måde; dit nuværende problem er, at de 2 laveste score er de samme, så enhver (u)lighedsoperation udført på begge værdier behandler den anden identisk.

Du kunne bruge noget som den analytiske forespørgsel ROW_NUMBER() for entydigt at identificere rækker:

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 ORDER BY-klausulen er på SCORE i stigende rækkefølge, vil en af ​​de laveste score blive fjernet. Dette vil være en tilfældig værdi, medmindre du tilføjer andre tie-breaker-betingelser til BESTIL BY.



  1. IO-fejl:Fik minus et fra et læst opkald

  2. Oracle SQL CASE WHEN ORA-00932:inkonsistente datatyper:forventet CHAR fik NUMMER 00932. 00000 - inkonsistente datatyper:forventet %s fik %s

  3. Insekt? #1146 - Tabel 'xxx.xxxxx' eksisterer ikke

  4. MariaDB JSON_ARRAY() Forklaret