네, 가능합니다. MySQL에서는 GREATEST() 함수를 사용하면 열(column)이 아닌 행(row) 방향, 즉 여러 컬럼의 값 중에서 최댓값을 손쉽게 구할 수 있습니다.
1. 테이블 생성하기
먼저 예제에 사용할 테이블을 만들어 보겠습니다.
mysql> create table DemoTable
(
Value1 int,
Value2 int,
Value3 int
);
Query OK, 0 rows affected (0.58 sec)2. 데이터 삽입하기
INSERT 명령어를 사용해 레코드를 추가합니다.
mysql> insert into DemoTable values(190,395,322); Query OK, 1 row affected (0.16 sec)
3. 저장된 데이터 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+--------+--------+--------+ | Value1 | Value2 | Value3 | +--------+--------+--------+ | 190 | 395 | 322 | +--------+--------+--------+ 1 row in set (0.00 sec)
4. GREATEST()로 행 단위 최댓값 구하기
이제 GREATEST() 함수를 사용해 세 개 컬럼(Value1, Value2, Value3) 중 가장 큰 값을 행 단위로 조회하는 쿼리를 작성해 보겠습니다.
mysql> select greatest(Value1,Value2,Value3) as GreaterValue from DemoTable;
실행 결과는 다음과 같습니다.
+--------------+ | GreaterValue | +--------------+ | 395 | +--------------+ 1 row in set (0.04 sec)
결과를 보면 세 값(190, 395, 322) 중 최댓값인 395가 반환된 것을 확인할 수 있습니다.
참고 사항
GREATEST()는 두 개 이상의 인수를 받을 수 있으며, 인수 중 하나라도 NULL이 포함되면 결과도 NULL을 반환합니다. 따라서 NULL 값이 있을 수 있는 컬럼에 사용할 경우 COALESCE() 등을 함께 활용하는 것이 좋습니다. 반대로 최솟값을 구하고 싶다면 LEAST() 함수를 사용하면 됩니다.