컬럼값이 2번째로 큰 레코드 및 컬럼값 구하기 1 2 8,238

by dnfrkwhr [Oracle 기초] [2014.04.02 19:57:48]


테이블명 : A
상품번호    가격     중량
    1       100 10
    4       150       5
    5       200       5
    10      110  5    
    13      200      10
위와 같은 테이블A가 있습니다. 상품번호가 두번째로 큰 레코드만 가져오고 싶은데 어떻게 처리를 해줘야 하나요?
또한 두번째로 큰 컬럼의 값을 아래와 같은 쿼리로 작성하여 질의를 하면 구문 오류가 나서요.
조언 부탁드립니다. 

select min(상품번호)
from A
where 상품번호 in (select 상품번호 from A order by 상품번호 desc)
by 마농 [2014.04.03 08:42:20]
SELECT *
  FROM (SELECT a.*
             , ROW_NUMBER() OVER(ORDER BY 상품번호 DESC) rn
          FROM a
        )
 WHERE rn = 2
;

by 김용학 [2014.04.03 09:13:18]

마농님꺼와 동일 하네요.
그래도 올려 볼게요.
 
WITH T(GOOD, PRICE, WEIGHT) AS
  ( SELECT 1, 100, 10 FROM DUAL UNION ALL
   SELECT 4, 150,  5 FROM DUAL UNION ALL
   SELECT 5, 200,  5 FROM DUAL UNION ALL
   SELECT 10, 110,  5 FROM DUAL UNION ALL
   SELECT 13, 200, 10 FROM DUAL
  )
SELECT *
 FROM (
    SELECT T.*
       , ROW_NUMBER() OVER(ORDER BY GOOD ASC) RN
     FROM T
    )
 WHERE RN = 2 ;
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입