MySQL에서 열(column)의 최댓값을 구하려면 MAX(열이름) 함수를, 최솟값을 구하려면 MIN(열이름) 함수를 사용합니다. 이 두 집계 함수는 숫자 데이터뿐 아니라 날짜, 문자열 등에도 활용할 수 있어 다양한 상황에서 유용합니다.
기본 문법
특정 열에서 가장 높은 값과 가장 낮은 값을 찾아, 그 값에 해당하는 행 전체를 조회하는 기본 문법은 다음과 같습니다.
mysql> SELECT @min_val:=MIN(columnName), @max_val:=MAX(columnName) FROM tableName;
mysql> SELECT * FROM tableName WHERE columnName=@min_val OR columnName=@max_val;
첫 번째 쿼리는 사용자 변수 @min_val과 @max_val에 각각 최솟값과 최댓값을 저장하고, 두 번째 쿼리는 해당 값과 일치하는 모든 행을 반환합니다.
참고: 이 글에서는 'StudentsRecords'라는 데이터베이스와 'STUDENT'라는 테이블이 있다고 가정합니다.
예제로 사용할 <STUDENT> 테이블의 내용은 다음과 같습니다.
| StudentId | StudentMarks |
|---|---|
| S001 | 90 |
| S002 | 97 |
| S003 | 72 |
쿼리 작성
이제 위 테이블에서 최고 점수와 최저 점수를 가진 학생을 조회하는 쿼리를 작성해 보겠습니다.
mysql> SELECT @min_val:=MIN(StudentMarks), @max_val:=MAX(StudentMarks) FROM STUDENT;
mysql> SELECT * FROM STUDENT WHERE StudentMarks=@min_val OR StudentMarks=@max_val;
실행 결과
+---------------------+
| StudentMarks |
+---------------------+
| 97 |
+---------------------+
위 쿼리에서 'StudentMarks'는 점수가 저장된 열의 이름이며, 'STUDENT'는 최솟값과 최댓값을 조회할 대상 테이블의 이름입니다. 실행 결과에서는 최고 점수인 97점(S002 학생)이 출력되었습니다. 만약 두 조건에 모두 해당하는 값이 있다면 최솟값과 최댓값에 해당하는 행이 함께 반환됩니다.