sql >> Databasteknik >  >> RDS >> Oracle

Välj det näst högsta lägsta värdet i Oracle

Använd en analytisk funktion

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

De analytiska funktionerna RANK , DENSE_RANK och ROW_NUMBER är identiska förutom hur de hanterar slipsar. RANK använder en sportliknande process för att bryta band så om två rader är lika för en rankning av 1, har nästa rad rankningen 3. DENSE_RANK ger båda raderna delad för första plats rankningen 1 och tilldelar sedan nästa rad rankningen 2. ROW_NUMBER bryter godtyckligt oavgjort och ger en av de två raderna med det lägsta värdet 1 och den andra 2.



  1. Hur matar man ut resultatet av SELECT-satsen som exekveras med inbyggd dynamisk SQL?

  2. Hur FROM_BASE64() fungerar i MariaDB

  3. Hur tar man bort dubbletter av poster?

  4. MySQL-sökning i kommalista