Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle SELECT TOP 10 Datensätze

Sie müssen Ihre aktuelle Abfrage wie folgt in eine Unterabfrage einfügen:

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 wendet rownum auf das Ergebnis an, nachdem es zurückgegeben wurde.
Sie müssen das Ergebnis filtern, nachdem es zurückgegeben wurde, daher ist eine Unterabfrage erforderlich. Sie können auch die RANK()-Funktion verwenden, um Top-N-Ergebnisse zu erhalten.

Versuchen Sie es aus Leistungsgründen mit NOT EXISTS anstelle von NOT IN . Weitere Informationen finden Sie hier.