Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Registros Oracle SELECT TOP 10


Você precisará colocar sua consulta atual na subconsulta como abaixo:
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

O Oracle aplica rownum ao resultado depois que ele foi retornado.
Você precisa filtrar o resultado depois que ele foi retornado, então uma subconsulta é necessária. Você também pode usar a função RANK() para obter resultados Top-N.

Para desempenho, tente usar NOT EXISTS no lugar de NOT IN . Veja isso para mais.