Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 3개 열의 최대값 구하기 – GREATEST() 함수 완벽 가이드

MySQL에서 여러 개의 열(column)에 저장된 값들 중 가장 큰 값을 한 번에 확인하고 싶다면 GREATEST() 함수를 사용하면 됩니다. 별도의 조건문이나 복잡한 쿼리 없이, 인자로 전달된 값들 중 최대값을 손쉽게 반환해 줍니다.

GREATEST() 함수 기본 문법

세 개의 서로 다른 열에서 최대값을 구하는 기본 문법은 다음과 같습니다.

SELECT GREATEST(yourColumnName1, yourColumnName2, yourColumnName3) AS anyAliasName FROM yourTableName;

각 열 이름을 콤마(,)로 구분하여 GREATEST() 함수에 전달하고, AS 절을 사용해 결과 컬럼에 원하는 별칭(alias)을 지정할 수 있습니다.

예제 테이블 생성

실제 동작을 이해하기 위해 세 개의 정수형 열을 가진 테이블을 먼저 만들어 보겠습니다.

mysql> create table MaxOfThreeColumnsDemo
    -> (
    -> First int,
    -> Second int,
    -> Third int
    -> );
Query OK, 0 rows affected (0.73 sec)

샘플 데이터 삽입

INSERT 명령어를 사용해 테이블에 몇 개의 레코드를 추가합니다.

mysql> insert into MaxOfThreeColumnsDemo values(30,90,60);
Query OK, 1 row affected (0.16 sec)
mysql> insert into MaxOfThreeColumnsDemo values(100,40,50);
Query OK, 1 row affected (0.20 sec)
mysql> insert into MaxOfThreeColumnsDemo values(101,290,150);
Query OK, 1 row affected (0.22 sec)

저장된 데이터 확인

SELECT 문으로 테이블의 전체 레코드를 조회해 보겠습니다.

mysql> select *from MaxOfThreeColumnsDemo;

실행 결과는 다음과 같습니다.

+-------+--------+-------+
| First | Second | Third |
+-------+--------+-------+
| 30    | 90     | 60    |
| 100   | 40     | 50    |
| 101   | 290    | 150   |
+-------+--------+-------+
3 rows in set (0.00 sec)

세 개의 열에서 최대값 조회하기

이제 GREATEST() 함수를 활용해 각 행(row)별로 세 개의 열 중 가장 큰 값을 조회하는 쿼리는 다음과 같습니다.

mysql> select greatest(First,Second,Third) AS MAXValueOfThreeColumns from MaxOfThreeColumnsDemo;

실행 결과를 확인해 보면, 각 행마다 세 열 중 최대값이 정상적으로 출력되는 것을 알 수 있습니다.

+------------------------+
| MAXValueOfThreeColumns |
+------------------------+
| 90                     |
| 100                    |
| 290                    |
+------------------------+
3 rows in set (0.00 sec)

정리 및 참고 사항

첫 번째 행에서는 Second 열의 90, 두 번째 행에서는 First 열의 100, 세 번째 행에서는 Second 열의 290이 각각 최대값으로 반환되었습니다.

참고로 GREATEST() 함수는 두 개 이상의 인자를 지원하므로, 네 개 이상의 열에서 최대값을 구할 때도 동일한 방식으로 활용할 수 있습니다. 또한 반대로 여러 값 중 최소값을 구하고 싶다면 LEAST() 함수를 사용하면 됩니다.

단, 인자 중 하나라도 NULL이 포함되어 있으면 GREATEST() 함수는 NULL을 반환하므로, NULL 값이 존재할 가능성이 있는 데이터에는 IFNULL() 등의 함수를 함께 사용하는 것이 좋습니다.