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

Oracle VÆLG TOP 10 poster

Du skal indsætte din aktuelle forespørgsel i underforespørgsel som nedenfor:

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 anvender rownum på resultatet, efter at det er blevet returneret.
Du skal filtrere resultatet efter det er blevet returneret, så en underforespørgsel er påkrævet. Du kan også bruge RANK()-funktionen til at få Top-N-resultater.

For ydeevne prøv at bruge NOT EXISTS i stedet for NOT IN . Se dette for mere.



  1. Hvad returnerer en vellykket MySQL DELETE? Hvordan kontrollerer man, om SLETNING lykkedes?

  2. Råd om SQL Server-ydelse fra Brent Ozar og Pinal Dave

  3. Hvad er de forskellige måder at indsætte data i SQL Server Table - SQL Server / TSQL Tutorial Part 100

  4. NEWID() vs NEWSEQUENTIALID() i SQL Server:Hvad er forskellen?