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

Oracle SELECT TOP 10 rekordów

Musisz umieścić swoje bieżące zapytanie w podzapytaniu, jak poniżej:

SELECT * FROM (
  SELECT DISTINCT 
  APP_ID, 
  NAME, 
  STORAGE_GB, 
  HISTORY_CREATED, 
  TO_CHAR(HISTORY_DATE, 'DD.MM.YYYY') AS HISTORY_DATE  
  FROM HISTORY WHERE 
    STORAGE_GB IS NOT NULL AND 
      APP_ID NOT IN (SELECT APP_ID FROM HISTORY WHERE TO_CHAR(HISTORY_DATE, 'DD.MM.YYYY') ='06.02.2009')
  ORDER BY STORAGE_GB DESC )
WHERE ROWNUM <= 10

Oracle stosuje rownum do wyniku po jego zwróceniu.
Musisz filtrować wynik po jego zwróceniu, więc wymagane jest podzapytanie. Możesz również użyć funkcji RANK(), aby uzyskać wyniki Top-N.

Aby uzyskać wydajność, spróbuj użyć NOT EXISTS zamiast NOT IN . Zobacz więcej.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dzielenie ciągu na wiele wierszy w Oracle

  2. Określono nieprawidłowy adres URL Oracle:OracleDataSource.makeURL

  3. Używanie aliasu w części instrukcji Case w Oracle SQL

  4. Powielanie rekordów w celu wypełnienia luki między datami

  5. Oracle CLOB nie może wstawić więcej niż 4000 znaków?