본문 바로가기
SQL/Oracle

오라클 최대값 2번째로 큰 값 N번째로 큰 값 구하는 방법

by wakestand 2020. 6. 9.
반응형

위와 같은 테이블을 가지고

SAL을 기준으로 봤을 때 

 

최대값, 2번째 최대값

3,4,5 같은 N번째 최대값을 구하는 방법을 알아보자

 

먼저 최대값은

SELECT MAX(컬럼명) FROM 테이블명

 

두번째 최대값은 

SELECT MAX(컬럼명) FROM 테이블명

WHERE 컬럼명 NOT IN (SELECT MAX(컬럼명) FROM 테이블명)

 

이렇게 사용해주면 되는데

 

두번째 최대값을 구하는 방법으로

3,4번째까지 올려 나가다가는

보기가 상당히 어렵기 때문에

 

먼저 정렬하려는 값을 DESC 로 정렬하고

밖에서 ROWNUM을 추가해서 컬럼과 같이 뽑아낸 후

마지막에 원하는 N번째 값만 가져오는 식으로 사용한다

 

마지막으로 정렬하는 값 중에

5000, 3000, 3000, 2975가 있는데

중복 값은 제외해 3번째 큰 값이

2975가 나오게 하려면

 

위와 같이 처음 SELECT 하는 부분에서

DISTINCT를 넣어주면

중복 값은 하나로 합쳐지게 된다

 

마지막으로 사용한 코드는 아래와 같다

 

-- 최대값
SELECT MAX(SAL) FROM EMP 

-- 두번째 최대값
SELECT MAX(SAL) FROM EMP
WHERE SAL NOT IN (SELECT MAX(SAL) FROM EMP)

-- N번째 최대값
SELECT SAL 
  FROM 
	(
	SELECT ROWNUM AS RN, SAL 
	  FROM 
		  (
		  SELECT SAL
			FROM EMP
		   WHERE SAL IS NOT NULL -- NULL 제외
		   ORDER BY SAL DESC
	      )
	)
 WHERE RN = 3

-- N번째 최대값 (중복값 제외하고 구할 경우)
SELECT SAL 
  FROM 
	(
	SELECT ROWNUM AS RN, SAL 
	  FROM 
		  (
		  SELECT DISTINCT SAL
			FROM EMP
		   WHERE SAL IS NOT NULL -- NULL 제외
		   ORDER BY SAL DESC
	      )
	)
 WHERE RN = 3
반응형

댓글