[SQL] GREATEST로 동일 행의 여러 필드 중 최댓값 구하기

Unit·2025년 12월 23일

SQL

목록 보기
52/59

SQL에서 최댓값을 구해야 할 때, 우리는 보통 MAX 함수를 떠올립니다.

하지만 집계가 아니라, 같은 행 안에 있는 여러 값 중 최댓값 하나를 고르고 싶은 경우도 있습니다.

이럴 때 활용할 수 있는 함수가 있을까요?


🥇 GREATEST

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이 포함될 수 있는 경우에는 반드시 처리 기준을 함께 고려해야 합니다.

profile
협업, 유지보수, 최적화를 고려한 데이터 실무 팁을 정리합니다.

0개의 댓글