반응형
흔히들 알고 있는 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
[참고]
반응형
'Develops > SQL' 카테고리의 다른 글
[ORACLE] 계층형 쿼리( START WITH ... CONNECT BY / LEVEL 활용 ) (1) | 2024.03.26 |
---|---|
[ORACLE] SIGN 함수 (양수,음수 구분하기) (0) | 2024.03.26 |
[ORACLE] LISTAGG 집계함수 (여러 행을 하나의 값으로 합치기) (0) | 2024.03.24 |
[ORACLE] LPAD, RPAD 함수 (지정한 길이만큼 문자('0', 공백) 채우기) (0) | 2024.03.24 |
[ORACLE] 서브쿼리 2 DEPTH 참조 (SubQuery 2 Depth Issue) (0) | 2024.03.24 |