Database/SQL

오라클 Oracle 가장큰값, 두번째 큰값, 가장작은값, 두번째로 작은값 구하기 GREATEST, LEAST

리커니 2015. 11. 25. 21:47
반응형

 

오라클 Oracle 가장큰값, 두번째 큰값, 가장작은값, 두번째로 작은값 구하기 GREATEST, LEAST

 컬럼 내에서 가장 큰 값과 작은 값은 MAX(), MIN()을 사용하면 된다.

하지만 다른 컬럼 중에서 크기나 순위를 정하기 위해서는 GREATEST(), LEAST()를 사용한다.

 

- GREATEST 사용법

GREATEST(col1, col2, col3, col4, ...)

 

ex) GREATEST(OVERSPD_SUM, QUICK_ACCEL_SUM, QUICK_DECEL_SUM, QUICK_TURN_SUM)

 

- LEAST 사용법

LEAST(col1, col2, col3, col4,...)

 

ex) LEAST(OVERSPD_SUM, QUICK_ACCEL_SUM, QUICK_DECEL_SUM, QUICK_TURN_SUM, QUICK_JINO_SUM)

 

그럼 두번째로 큰 값과 두번째로 작은 값은 어떻게 구할까?

두번째로 큰 수는 한 컬럼씩 빼가면서 가장 큰 값들 중 가장 작은 값을 구하면 된다.

반대로 두번째로 작은 수는  한 컬럼씩 빼가면서 가장 작은 값들 중 가장 큰 값을 구하면 된다

 

 

 

[col1, col2, col3, col4, col5] 값중에 구한다면

 

- 두번째로 큰 값 구하기

   LEAST(GREATEST(col1, col2, col3, col4),
              GREATEST(col1, col2, col3, col5),
              GREATEST(col1, col2, col4, col5),
              GREATEST(col1, col3, col4, col5),
              GREATEST(col2, col3, col4, col5))  //두번째로 큰값 구하기

 

- 두번째로 작은 값 구하기

   GREATEST(LEAST(col1, col2, col3, col4),
                   LEAST(col1, col2, col3, col5),
                   LEAST(col1, col2, col4, col5),
                   LEAST(col1, col3, col4, col5),
                   LEAST(col2, col3, col4, col5))  //두번째로 작은값  구하기

 

- 그럼 세번째로 큰값을 구한다면? (위의 예에서)

두번째로 큰값과  두번째로 작은 값 사이의 값을 구하면 된다.

 

반응형