Database

[MySQL] GREATEST/LEAST - 행 별 최대/최소 찾기

비번변경 2025. 3. 27. 17:58

개요

평소 많이 사용하는 MAX 함수는 특정 열 내의 최댓값을 찾는 함수이다. 그런데 이번에는 특정 행 내의 최댓값을 확인해야 하는 경우가 발생했다. 이번 글에서는 greatest라는 함수를 사용해 각 행의 최댓값을 찾아본다.

 

 

GREATEST

GREATEST는 주어진 수에서 가장 큰 값을 반환한다. 숫자 뿐만 아니라 문자열을 대상으로도 연산을 할 수 있다.

GREATEST(arg1, arg2, arg3, ...)

-- 예시
SELECT GREATEST(1, 10, 100, 32) AS greatest
UNION
SELECT GREATEST("w3Schools.com", "microsoft.com", "apple.com") AS greatest

아래는 테이블에 대해 사용하는 예시이다. 먼저 다음과 같은 세 개의 숫자형 데이터인 컬럼으로 이루어진 테이블이 있다고 하자.

더보기
WITH cte (col1, col2, col3) AS
(
  SELECT 1, 2, 3
  UNION ALL
  SELECT 3, 4, 1
  UNION ALL
  SELECT -1, -5, -2
)
SELECT col1, col2, col3 FROM cte;

이 테이블의 각 행에서 최대값을 확인하면 다음과 같다.

SELECT greatest(col1, col2, col3) 
  FROM cte;

각 행마다 최대값이 반환하는 것을 확인할 수 있다.

 

 

LEAST

LEAST는 GREATEST와 반대로 매개변수로 전달받은 값 중 최솟값을 반환하는 함수이다. 

LEAST(arg1, arg2, arg3, ...)

-- 예시
SELECT LEAST(1, 10, 100, 32) AS least
UNION
SELECT LEAST("w3Schools.com", "microsoft.com", "apple.com") AS least

아무래도 매개변수가 문자열인 경우에는 사전 순으로 비교한 결과를 반환하는 것 같다.

 

 

참고 문서

https://www.w3schools.com/sql/func_mysql_greatest.asp

https://dev.mysql.com/doc/refman/8.4/en/comparison-operators.html

 

728x90