Select second most minimum value in Oracle

前端 未结 3 582
一向
一向 2020-12-18 01:09

I need to write a query that selects a minimum value and it\'s second most minimum value from a list of integers.

Grabbing the smallest value is obvious:

<         


        
3条回答
  •  鱼传尺愫
    2020-12-18 02:02

    Use an analytic function

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

    The analytic functions RANK, DENSE_RANK, and ROW_NUMBER are identical except for how they handle ties. RANK uses a sports-style process of breaking ties so if two rows tie for a rank of 1, the next row has a rank of 3. DENSE_RANK gives both of the rows tied for first place a rank of 1 and then assigns the next row a rank of 2. ROW_NUMBER arbitrarily breaks the tie and gives one of the two rows with the lowest value a rank of 1 and the other a rank of 2.

提交回复
热议问题