본문으로 바로가기

[Oracle] 오라클 최대,최소 값 구하기(GREATEST,LEAST)

category DB\SQL 2019. 11. 13. 19:55

그룹함수인 MIN , MAX 가 아닌, 하나의 ROW나 여러가지 값중에 최대와 최소 값을 알고 싶을때

 

GREATEST 와 LEAST 로 구할 수 있다.

 

 

MIN 과 MAX는 다중 ROW에서 그룹을지어서 하나의 ROW로 표현할때 최대값과 최소값을 가져오지만

 

GREATEST와 LEAST는 하나의 ROW나 여러개의 값들중에 최대,최소값을 가져올수있다.

 

 

GREATEST(n1, n2, n3, n4...)


SELECT GREATEST(1,2,3,4,5) AS MAX FROM DUAL

--5

이와같이 사용가능하다.

 

LEAST(n1, n2, n3, n4...)


SELECT LEAST(1,2,3,4,5) AS MIN FROM DUAL

--1

 

매우 간단하다.

 

 

주의할점으로 숫자이외의 값이 들어가면 오류가 발생한다.

SELECT LEAST(1,2,3,4,a) AS MIN FROM DUAL

ORA-00904: "A": 부적합한 식별자
00904. 00000 -  "%s: invalid identifier"
*Cause:    
*Action:
1행, 22열에서 오류 발생

 

그리고 null 이 들어가면 두함수모두 최대,최소에 상관없이 null을 반환한다.

SELECT LEAST(1,2,3,4,null) AS MIN FROM DUAL
--null

SELECT GREATEST(1,2,3,4,null) AS MAX FROM DUAL
--null