예시 data

name subject score
김철수 영어 85
이철수 수학 120
남궁철수 물리 100
베르나르철수 문학 95

table : std_score name : varchar(20)
subject : varchar(20)
score : int

최대값 구하기

1
2
SELECT max(score) FROM std_score;
>>> 120

최소값 구하기

1
2
SELECT min(score) FROM std_score;
>>> 85

문자형 데이터 최대 최소값

max 및 min 은 문자형 데이터에도 적용할 수 있습니다.

문자

문자에 max 혹은 min 값을 가져올 경우, 정렬상 마지막 값 혹은 첫 값을 가져옵니다.

  • max : 정렬 상 마지막 값
  • min : 정렬 상 첫 번째 값
1
2
3
4
5
SELECT max(name) FROM std_score;
>>> 베르나르철수

SELECT min(subject) FROM std_score;
>>> 영어

문자형인 숫자 비교 CAST AS

column 타입은 문자형이지만, 안에 들어있는 값은 숫자형인 경우들이 있습니다.
이 때 숫자간의 대소를 비교해야한다면?

CAST AS 구문을 사용할 수 있습니다.
CAST AS 구문으로 문자형인 데이터를 숫자형으로 변환하여 비교하는 것이죠.

예시 데이터

name subject score
김철수 영어 85
이철수 수학 120
남궁철수 물리 100
베르나르철수 문학 95

table : std_score name : varchar(20)
subject : varchar(20)
score : varchar(20)

먼저, 문자형인 숫자를 변환 없이 비교할 경우입니다.

1
2
SELECT max(score) FROM std_score;
>>> 95

분명 최대 점수인 120점이 나와야 할 것 같은데.. 95점이라니!
이는 score 컬럼이 varchar 즉, 문자형이기 때문입니다.
따라서 정렬상 가장 마지막에 있는 95점이 반환되는 것이죠.

이번엔 CAST AS를 통해 숫자로 변환한 뒤 비교해보겠습니다.

1
2
SELECT max(CAST(score AS INTEGER)) FROM std_score;
>>> 120

문자형인 score 컬럼의 값들을 INTEGER로 변환(CAST) 한 뒤 비교하기 때문에, 숫자 중 최대값인 120이 반환되는 것을 볼 수 있습니다.

Reference

  • max, min : https://extbrain.tistory.com/55
  • cast : https://hajoung56.tistory.com/19