选择前5大值 - Oracle

时间:2011-11-26 00:23:25

标签: sql oracle selection

这是一个Oracle问题。

我需要在一系列记录中找到前5大值。假设我有2000条记录,并且有一列保存每条记录中的数字值。我需要检查这个数字字段,只选择前五大字段。

所以,如果我在我的数字列中有这些值

22
3
44
2
23
9
4
2
99

然后将返回以下内容

22
44
23
9
99

我目前不得不解析字段中的数字值,因为它是一个字符串。我用以下

解析它
REGEXP_SUBSTR(SUBSTR(ADDITIONAL_INFO, 1 ,
              INSTR(ADDITIONAL_INFO, ',', 1,1)), '[0-9]+') "CELLS"

我认为可能会出现循环,如果涉及其他选择。如果这是C#,我可以在几分钟内完成。但是Oracle语法让我失望。

请帮忙。

1 个答案:

答案 0 :(得分:9)

你可以尝试:

SELECT * FROM
    (SELECT ADDITIONAL_INFO FROM your_table
     ORDER BY to_number(ADDITIONAL_INFO) DESC) r
WHERE rownum <= 5