IT/Oracle(오라클) / / 2025. 1. 22. 11:03

[Oracle] 오라클 GREATEST, LEAST, MAX KEEP, MIN KEEP 함수(데이터 비교, 조건별 max min, 최댓값, 최솟값)

이번 글에서는 ORACLE의 GREATEST, LEAST, MAX KEEP, MIN KEEP 함수에 대해 알아보겠습니다.

ORACLE 데이터베이스에서 GREATESTLEAST 함수는 여러 값 중에서 가장 큰 값 또는 작은 값을 반환하는 함수입니다. MAX KEEPMIN 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 절 내에서 사용할 수 없습니다.

     

    • 네이버 블로그 공유
    • 네이버 밴드 공유
    • 페이스북 공유
    • 카카오스토리 공유