반응형

안녕하세요. 두번째로 최대값을 출력해보는 SQL을 작성해보겠습니다.

 

아래와 같은 테이블이 존재합니다.

 

1. SCORE의 최대값을 출력하여 보겠습니다.

1
SELECT MAX(SCORE) AS MAX_SCORE FROM TEST_RESULT;
cs

 

2. SCORE의 두번째 최대값을 출력하여 보겠습니다.

 

방법 1) NOT IN 사용하기

1
2
3
SELECT MAX(SCORE) AS SECOND_MAX_SCORE
  FROM TEST_RESULT
 WHERE SCORE NOT IN 50;
cs

 

방법 2) ROWNUM 사용하기

1
2
3
4
5
6
SELECT SECOND_MAX_SCORE
  FROM (SELECT ROWNUM AS RN, SCORE
         FROM(SELECT SCORE
               FROM TEST_RESULT
              ORDER BY SCORE DESC))
 WHERE RN = 2;
cs

 

결과는 최대값 50을 제외하고 가장 큰 수 인 40이 출력됩니다.

 

 

3. SCORE의 최대값을 제외한 나머지 행을 출력하여 보겠습니다.

 

방법 1) NOT IN 사용하기

1
2
3
4
SELECT SCORE AS SCORE
  FROM TEST_RESULT
 WHERE SCORE NOT IN 50
ORDER BY SCORE ASC;
cs

 

방법 2) ROWNUM 사용하기

1
2
3
4
5
6
7
SELECT SCORE
  FROM (SELECT ROWNUM AS RN, SCORE
         FROM(SELECT SCORE
               FROM TEST_RESULT
              ORDER BY SCORE DESC))
 WHERE RN > 1
ORDER BY SCORE ASC
cs

 

결과는 최대값 50을 제외한 나머지 목록이 출력됩니다.

반응형

+ Recent posts