[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은 비슷해보이고 헷갈릴 수 있지만 사용법이 완전히 다르다는 것이 중요하다.