반응형
위와 같은 테이블을 가지고
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
반응형
'SQL > Oracle' 카테고리의 다른 글
오라클 환경변수 설정 및 추가 삭제 방법 (0) | 2020.06.22 |
---|---|
오라클 ORDER BY 1 2 3 개념 및 예제 (0) | 2020.06.17 |
오라클 테이블 제약조건 조회방법 (0) | 2020.06.04 |
오라클 PK 조회 추가 삭제 변경방법 정리 (0) | 2020.06.04 |
오라클 SELECT UPDATE 동시에 하는 방법 정리 (0) | 2020.06.03 |
댓글