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

Vælg næsthøjeste minimumværdi i Oracle

Brug en analytisk funktion

SELECT value
  FROM (SELECT value,
               dense_rank() over (order by value asc) rnk
          FROM table)
 WHERE rnk = 2

De analytiske funktioner RANK , DENSE_RANK og ROW_NUMBER er identiske, bortset fra hvordan de håndterer slips. RANK bruger en sportslignende proces til at bryde bånd, så hvis to rækker er uafgjorte til en rang på 1, har den næste række en rang på 3. DENSE_RANK giver begge rækker lige for førstepladsen en rang på 1 og tildeler derefter den næste række en rang på 2. ROW_NUMBER bryder vilkårligt uafgjort og giver en af ​​de to rækker med den laveste værdi en rang på 1 og den anden en rang på 2.



  1. Hvad er der galt med denne PL/SQL? Bindingsvariabel * er IKKE DEKLARERET

  2. Oracle vælg seneste datopost

  3. Hvad er fordelen ved zerofill i MySQL?

  4. SQLAlchemy flere fremmednøgler i én tilknyttet klasse til den samme primærnøgle