2011-11-26 4 views
1

이것은 오라클 질문입니다.상위 5 개 가장 큰 값 선택 - Oracle

일련의 레코드에서 상위 5 개 가장 큰 값을 찾아야합니다. 2000 레코드가 있고 각 레코드의 숫자 값을 보유하는 열이 있다고 가정 해보십시오. 이 번호 필드를 확인하고 가장 큰 상위 5 개 항목 만 선택해야합니다. 내가

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#이라면 몇 분 안에이 작업을 수행 할 수 있습니다. 하지만 오라클 문법은 저를 버리고 있습니다.

도와주세요.

+0

당신의 열 (내가 생각하는) 당신이 필요로하는 번호와 다른 것을 포함하는 경우, 귀하의 질문을 편집하고 우리에게 행하시기 바랍니다 보여주십시오. – Marco

답변

9

당신은 시도 할 수 :

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

작동하지 않습니다 ('WHERE'는 반드시'ORDER BY' 이전이어야합니다). 그것은 그렇습니다. 그러나'SELECT * FROM (your_query without where) where rownum <6' – a1ex07

+0

@ a1ex07 : 예, 맞습니다. 내 잘못을 알지 못하고 쿼리를 너무 빨리 작성했습니다. 방금 내 대답을 편집했습니다. 고마워요! :) – Marco

관련 문제