개요
평소 많이 사용하는 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