Oracle
 sql >> база данни >  >> RDS >> Oracle

Изключване само на една MIN стойност на Oracle SQL

За да направите това, трябва да ги разделите по някакъв начин; текущият ви проблем е, че 2-те най-ниски резултата са еднакви, така че всяка операция за (не)равенство, извършена върху една от двете стойности, третира другата идентично.

Можете да използвате нещо като аналитичната заявка ROW_NUMBER() за уникално идентифициране на редове:

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

Тъй като клаузата ORDER BY е на SCORE във възходящ ред, един от най-ниските резултати ще бъде премахнат. Това ще бъде произволна стойност, освен ако не добавите други решаващи условия към 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. Мога ли да насоча редове с дати в колони, без да се налага да посочвам датите в осевата таблица? Oracle SQL

  2. просто произволно вземане на проби при изтегляне на данни от склад (oracle engine) с помощта на proc sql в sas

  3. Насочете ADO.Net DataSet към различни бази данни по време на изпълнение?

  4. Възможна ли е следната заявка с SQL Pivot?

  5. Добавете ден към Timestamp