Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Wykluczenie tylko jednej wartości MIN w Oracle SQL

Aby to zrobić, musisz je jakoś oddzielić; Twoim obecnym problemem jest to, że 2 najniższe wyniki są takie same, więc każda operacja (nie)równości wykonana na jednej wartości traktuje drugą identycznie.

Możesz użyć czegoś takiego jak zapytanie analityczne ROW_NUMBER() aby jednoznacznie zidentyfikować wiersze:

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

Ponieważ klauzula ORDER BY znajduje się na SCORE w kolejności rosnącej, jeden z najniższych punktów zostanie usunięty. Będzie to wartość losowa, chyba że dodasz inne warunki rozstrzygania remisów do ORDER BY.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Połącz się z Oracle za pomocą SSMA

  2. Oracle — uzyskaj dane z ubiegłego roku (dynamiczny)

  3. Jaka jest domyślna wartość VARCHAR2 w Oracle?

  4. Co oznacza select count(1) z table_name w dowolnych tabelach bazy danych?

  5. Próbuję uzyskać rzeczywiste dane, które powodują wyjątek