SQL에서 최댓값을 구해야 할 때, 우리는 보통 MAX 함수를 떠올립니다.
하지만 집계가 아니라, 같은 행 안에 있는 여러 값 중 최댓값 하나를 고르고 싶은 경우도 있습니다.
이럴 때 활용할 수 있는 함수가 있을까요?
GREATEST는 하나의 row 안에 있는 여러 값 중 가장 큰 값을 반환하는 함수입니다.
GREATEST(value1, value2, value3, ...)
SELECT
user_id
, GREATEST(
last_login_dt
, last_purchase_dt
, last_cs_dt
) AS last_activity_dt
FROM customer_summary;
이 경우 GREATEST 함수를 활용할 수 있습니다.
GREATEST는 인자 중 하나라도 NULL이면 결과가 NULL입니다.
GREATEST(a, b) -- a 또는 b가 NULL이면 결과는 NULL
NULL이 허용되는 필드라면, 아래처럼 방어가 필요합니다.
GREATEST(
COALESCE(a, DATE '1900-01-01')
, COALESCE(b, DATE '1900-01-01')
)
✔️ 같은 행의 여러 필드 값 중 가장 큰 값을 보고 싶다면 GREATEST 함수를, 가장 작은 값을 보고 싶다면 LEAST 함수를 활용하세요.
✔️ NULL이 포함될 수 있는 경우에는 반드시 처리 기준을 함께 고려해야 합니다.