이번 글에서는 ORACLE의 GREATEST, LEAST, MAX KEEP, MIN KEEP 함수에 대해 알아보겠습니다.
ORACLE 데이터베이스에서 GREATEST와 LEAST 함수는 여러 값 중에서 가장 큰 값 또는 작은 값을 반환하는 함수입니다. MAX KEEP와 MIN KEEP는 집합에서 가장 큰 값이나 작은 값을 유지하는 데 사용됩니다.
GREATEST와 LEAST 함수
GREATEST 함수는 전달받은 값들 중에서 가장 큰 값을 반환하며, LEAST 함수는 가장 작은 값을 반환합니다.
구문
GREATEST(expr1, expr2, ... exprN)
LEAST(expr1, expr2, ... exprN)
이 두 함수는 모든 인수에 대해 NULL이 아닌 값들만 비교하며, 모든 값이 NULL일 경우 결과는 NULL입니다.
GREATEST 함수 예제
SELECT GREATEST(10, 20, 30) FROM dual;
실행 결과:
30
위의 예제에서 GREATEST 함수는 주어진 10, 20, 30 중에서 가장 큰 값인 30을 반환합니다. GREATEST 함수는 여러 값 중 가장 큰 값을 찾아 반환하는 데 유용합니다.
LEAST 함수 예제
SELECT LEAST(10, 20, 30) FROM dual;
실행 결과:
10
LEAST 함수는 주어진 값 중 가장 작은 값을 반환합니다. 예제에서는 10, 20, 30 중에서 가장 작은 값인 10을 반환하는 결과를 확인할 수 있습니다.
MAX KEEP 및 MIN KEEP 함수
MAX KEEP 함수는 주어진 그룹에서 가장 큰 값을 유지하고, 그 외의 값들을 제외합니다. 이 함수는 집합에서 조건에 맞는 최대 값을 선택할 때 유용하게 사용됩니다.
MIN KEEP 함수는 주어진 그룹에서 가장 작은 값을 유지하고, 그 외의 값들을 제외합니다. 이 함수는 집합에서 조건에 맞는 최소 값을 선택할 때 유용합니다.
구문
MAX(expr) KEEP (DENSE_RANK FIRST|LAST ORDER BY order_expr)
MIN(expr) KEEP (DENSE_RANK FIRST|LAST ORDER BY order_expr)
MAX KEEP 함수 예제
SELECT department_id, MAX(salary) KEEP (DENSE_RANK FIRST ORDER BY salary DESC)
FROM employees
GROUP BY department_id;
실행 결과:
department_id | salary
--------------|---------
10 | 10000
20 | 8000
이 예제에서는 각 부서에서 가장 높은 급여를 반환합니다. MAX KEEP는 급여가 높은 순으로 DENSE_RANK를 사용하여 가장 큰 값을 선택합니다. 각 부서별로 가장 높은 급여가 선택되어 반환되는 결과를 볼 수 있습니다.
MIN KEEP 함수 예제
SELECT department_id, MIN(salary) KEEP (DENSE_RANK FIRST ORDER BY salary ASC)
FROM employees
GROUP BY department_id;
실행 결과:
department_id | salary
--------------|---------
10 | 5000
20 | 3000
이 예제에서는 각 부서에서 가장 낮은 급여를 반환합니다. MIN KEEP는 급여가 낮은 순으로 DENSE_RANK를 사용하여 가장 작은 값을 선택합니다. 각 부서별로 가장 낮은 급여가 선택되어 반환되는 결과를 볼 수 있습니다.
마무리
이 글에서는 ORACLE의 GREATEST, LEAST, MAX KEEP, MIN KEEP 함수에 대해 살펴보았습니다. 각 함수의 사용법과 예제를 통해 실제 데이터 처리에서 어떻게 활용할 수 있는지 확인할 수 있었습니다. GREATEST와 LEAST는 값들 간의 최대/최소 값을 찾을 때 유용하고, MAX KEEP와 MIN KEEP는 특정 그룹에서 최댓값과 최솟값을 유지하며 집합을 관리하는 데 유용합니다. 이를 잘 활용하면 더 효율적으로 데이터를 처리할 수 있습니다.
참고로 KEEP 절은 DENSE_RANK와 함께 작동하도록 설계되었습니다.
RANK나 ROW_NUMBER와 같은 함수는 KEEP 절 내에서 사용할 수 없습니다.
'IT > Oracle(오라클)' 카테고리의 다른 글
[Oracle] 테이블(Table) 통계정보 수집 (DBMS_STATS.GATHER_TABLE_STATS) (0) | 2024.02.15 |
---|---|
[Oracle] 오라클 TRUNC 날짜 with 분기말, 분기초 구하기 (0) | 2023.05.24 |
SQL 테스트 사이트(무료 온라인 연습) 모음 (0) | 2023.01.13 |