2월 02, 2024

[PostgreSQL] GREATEST/MAX, LEAST/MIN 차이점

오늘은 PostgreSQL에서 자주 사용되는 GREATEST, MAX, LEAST, MIN 차이점에 대하여 알아보자. 


먼저 위와 같은 사원 테이블이 있다고 가정해보자.


EMP_NO에는 사번, EMP_NM에는 사원이름, AGE에서는 사원 나이 정보를 담고 있다. 


위 데이터 내에서 가장 크고, 작은 데이터를 구하고 싶다면 max와 min을 사용하면 된다. 


1. MAX/MIN: 데이터 레코드 중 최대/최소 값을 구하고 싶을 때 사용

만약 사번이 가장 큰 사원을 찾고 싶다면 아래와 같이 SQL을 작성할 수 있다. 


SELECT 

MAX(EMP_NO) 

FROM 

사원테이블; 


마찬가지로 나이가 가장 어린 사원의 나이를 알고 싶다면

SELECT 

MIN(AGE)

FROM 

사원테이블; 


위와 같이 작성할 수 있다. 


다만 만약 여러 칼럼들의 데이터 중에서 최대, 최소인 데이터를 알고 싶다면 어떻게 할까? 

예를 들어 나는 사원 중에 가장 나이가 적은 사람의 나이가 20살보다 적은지 많은지를 알고 싶다. 그럴 때는 GREATEST, LEAST 를 사용할 수 있는 것이다. 


2. GREATEST/LEAST : 여러 칼럼들 중에서 최대/최소값을 구하고 싶을 때 사용


SELECT 

LEAST(MIN(AGE), 20) 

FROM 

사원테이블; 


이런 식으로 적으면 사원테이블 중 나이가 가장 어린 사원의 나이와 20이라는 숫자 중에서 더 작은 값을 return하는 것이다. 


여기서는 MIN(AGE)가 25이므로 사실상 

LEAST(25, 20) 을 계산하는 것과 동일하며 20이 더 적기 때문에 20을 출력하게 된다. 


마찬가지로 GREATEST는 여러 칼럼 중에 최대값을 보여준다. 


GREATEST와 LEAST는 단순 두 칼럼의 비교뿐 아니라 여러 칼럼의 비교도 가능하기 때문에 


GREATEST(1,2,3,4,5) 

이런 식으로 여러 칼럼을 비교해도 된다. 


즉, GREATEST와 MAX, LEAST와 MIN은 비슷해보이고 헷갈릴 수 있지만 사용법이 완전히 다르다는 것이 중요하다.