sql >> Database >  >> RDS >> Oracle

Selecteer de tweede meest minimale waarde in Oracle

Een analytische functie gebruiken

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

De analytische functies RANK , DENSE_RANK , en ROW_NUMBER zijn identiek, behalve hoe ze omgaan met banden. RANK gebruikt een sportief proces om gelijkspel te verbreken, dus als twee rijen gelijk zijn voor een rang van 1, heeft de volgende rij een rangorde van 3. DENSE_RANK geeft beide rijen die gelijk staan ​​voor de eerste plaats een rangorde van 1 en kent vervolgens de volgende rij een rangorde van 2 toe. ROW_NUMBER verbreekt willekeurig de gelijkspel en geeft een van de twee rijen met de laagste waarde een rang van 1 en de andere een rang van 2.



  1. Opnieuw en opnieuw! Terugkerende gebeurtenissen in een gegevensmodel beheren

  2. EF 6 - Hoe parallelle queries correct uit te voeren

  3. Toegang krijgen tot een RowDataPacket-object

  4. Oracle NULLIF() functie