sql >> Databasteknik >  >> RDS >> Oracle

Oracle VÄLJ TOP 10 poster

Du måste lägga din aktuella fråga i underfrågan enligt nedan:

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 tillämpar rownum på resultatet efter att det har returnerats.
Du måste filtrera resultatet efter att det har returnerats, så en underfråga krävs. Du kan också använda RANK()-funktionen för att få topp-N-resultat.

För prestanda, försök att använda NOT EXISTS i stället för NOT IN . Se detta för mer.



  1. Tio vanliga hot mot genomförandeplanens kvalitet

  2. hur man skapar en lagrad procedur i Oracle som accepterar en rad parametrar

  3. Säkerhetsfunktioner i SQL Server 2017

  4. Hur man deklarerar användardefinierat undantag med hjälp av en undantagsvariabel i Oracle-databasen