본문 바로가기
Develops/SQL

[ORACLE] GREATEST, LEAST 함수 (하나의 행에서 최대값, 최소값 구하기)

by SLOTH91 2024. 3. 26.
반응형

흔히들 알고 있는 MAX, MIN 함수는 하나의 컬럼의 값(열 단위, COLUMN) 중에서 최대값, 최솟값을 구하는 함수이다.
마찬가지로 이번에 알아볼 GREATEST, LEAST 라는 함수도 최대값, 최소값을 구하는 함수이다.

다만, 하나의 행(열거 리스트)에서 여러 컬럼의 값(행 단위, ROW)을 비교한다는 점에서 차이가 있다.

 

  • MAX(COLUMN) : 대상 컬럼에서의 최대값 (열 단위, COLUMN)
  • MIN(COLUMN) : 대상 컬럼에서의 최소값 (열 단위, COLUMN)
  • GREATEST(expr1, expr2, ... ) : 대상 행(열거 리스트)에서의 최대값 (행 단위, ROW)
  • LEAST(expr1, expr2, ... ) : 대상 행(열거 리스트)에서의 최소값 (행 단위, ROW)

GREATEST/LEAST 함수의 주의사항으로는 모든 인자들을 첫 번째 인자의 데이터 형식으로 변환한 후 값을 비교하여 최대값/최소값을 비교하기 때문에, 인자들 중 첫 번째 인자의 데이터 형식으로 변환할 수 없는 값이 있으면 오류가 발생한다.

 

아래 예제를 참고하여 GREATEST, LEAST 함수에 대해서 더 알아보도록 하자.

 

 

GREATEST

GREATEST 함수는 최댓값을 구하는 함수로 인자 값들 중 가장 큰 값을 반환한다.

 

형식

GREATEST(expr1, expr2, ... )

 

문자 비교

  • ASCII 코드 값으로 변환하여 값을 비교하여 반환
SELECT GREATEST('A', 'B', 'C', 'a', 'b', 'c') FROM DUAL

-- 결과 : c
-- c의 ASCII 코드 값이 99로 가장 큽니다. 
-- A : 65, B : 66, C : 67, a : 97, b : 98, c : 99

 

날짜 비교

  • 가장 미래의 날짜를 반환
SELECT GREATEST(TO_DATE('2001-01-01','YYYY-MM-DD'), SYSDATE) FROM DUAL	

-- 결과 : 2024-04-01 오후 4:19:48

 

음수 처리

  • 열거리스트에 있는 값이 음수일 경우, '0'과 비교하여 0이 음수보다 크므로 '0'이 반환되는 원리
SELECT GREATEST(COLUMN, 0) AS COLUMN FROM TABEL_NAME

 

 

LEAST

LEAST 함수는 최솟값을 구하는 함수로 인자 값들 중 가장 작은 값을 반환한다.

 

형식

LEAST(expr1, expr2, ... )

 

문자비교

SELECT LEAST('a', 'b', 'c', 'd') FROM DUAL

-- 결과 : a

 

날짜 비교

SELECT LEAST(TO_DATE('2001-01-01','YYYY-MM-DD'), SYSDATE) FROM DUAL	

-- 결과 : 2001-01-01

 

 

[참고]

https://milku.tistory.com/106

 

반응형