MAX 이전값 0 3 4,212

by 스물일곱 [2008.11.21 15:06:00]


안녕하세요. 오라클 쿼리에 대해서 문의를 드립니다.

예)
SELECT
 A칼럼,                번호 - 1번키값
 MAX(B칼럼)      차수 - 2번키값
FROM
 테이블명
GROUP BY A칼럼

위의 쿼리는 2개의 PK가 존재할시 번호의 최고 차수를 구해오는 쿼리입니다.
만약 여기에서 최고차수 이전의 차수를 구해올 경우에

SELECT
 A칼럼,                  번호 - 1번키값
 MAX(B칼럼)-1     차수 - 2번키값
FROM
 테이블명
GROUP BY A칼럼

이렇게 할 수가 있을 겁니다.

여기에서 경우의 수가 발생할 수 있는데 그 경우의 수는


 A칼럼    B칼럼
   A           1
   A           3
   A           4
   A           6

바로 위와 같은 경우의 수 입니다.

차수가 5인 데이타가 사용자에 의해서 삭제 되었을 경우입니다.
이럴경우에 차수가 4인 값은 어떻게 가지고 올 수 있을까요...??
지금 현재 여기서 막혀서 어떻게 해야 할지 답을 못찾고 있습니다.

한번 문의를 들비니다.

by 배고파 [2008.11.21 15:10:40]
SELECT A, MAX(B)
FROM T
WHERE B NOT IN (SELECT MAX(B)
FROM T
GROUP BY A
)
GROUP BY A;

by 마농 [2008.11.21 15:17:25]
SELECT *
FROM
(
SELECT a, b
, RANK() OVER(PARTITION BY a ORDER BY b DESC) rk
FROM t
)
WHERE rk = 2

by 스물일곱 [2008.11.21 17:29:55]
배고파님, 마농님 감사합니다.
정말 많은 도움 감사합니다. ^.^
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입