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

Oracle SELECT TOP 10 record

Dovrai inserire la tua query corrente nella sottoquery come di seguito:

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 applica rownum al risultato dopo che è stato restituito.
È necessario filtrare il risultato dopo che è stato restituito, quindi è necessaria una sottoquery. Puoi anche utilizzare la funzione RANK() per ottenere i primi N risultati.

Per le prestazioni, prova a utilizzare NOT EXISTS al posto di NOT IN . Vedi questo per ulteriori informazioni.