반응형

SQL에서 MAX() 함수와 MIN() 함수를 숫자의 최댓값과 최솟값을 뽑아내기 위해 많이 사용한다. 그런데, 이 MAX()함수와 MIN()함수는 숫자 뿐만 아니라 문자에서도 사용을 하기도 한다.

 

1. 숫자를 사용할 때의 MAX()와 MIN

1) MAX()

숫자를 사용하는 MAX() 함수는 아래와 같이 사용한다. 

SELECT MAX(NAME)
  FROM (
		SELECT 1 AS NAME
		  FROM DUAL
        UNION ALL
		SELECT 2 AS NAME
		  FROM DUAL
        UNION ALL
		SELECT 3 AS NAME
		  FROM DUAL)

 

NAME이라는 컬럼에 1, 2, 3이 있을 때, MAX값은 3이다. 그래서 아래와 같이, 3을 출력하게 된다.

 

2) MIN()

숫자를 사용하는 MAX() 함수는 아래와 같이 사용한다. 

SELECT MIN(NAME)
  FROM (
		SELECT 1 AS NAME
		  FROM DUAL
        UNION ALL
		SELECT 2 AS NAME
		  FROM DUAL
        UNION ALL
		SELECT 3 AS NAME
		  FROM DUAL)

 

NAME이라는 컬럼에 1, 2, 3이 있을 때, MIN값은 1이다. 그래서 아래와 같이, 1을 출력하게 된다.

 

숫자를 사용하는 MAX()나 MIN()은 최댓값과 최솟값을 가져오는 상황에 사용을 한다. 그런데, 가끔 보면 문자열에 사용하는 경우가 있다.

 

2. 문자를 사용할 때의 MAX()와 MIN

MAX() 함수와 MIN() 함수는 숫자 뿐만 아니라 문자열도 사용이 가능하다. 문자열에 대한 MAX()와 MIN() 함수는 한글을 제외한 문자는 ASCII 코드를 사용하여 비교를 하고, 한글을 UNICODE를 사용하여 비교를 하여 MAX()와 MIN() 함수를 사용한다.

 

아래의 ASCII 코드표를 보자.

 

여기서 보면, 대문자 알파벳이 소문자 알파벳보다 ASCII 코드값이 더 작다. 대문자 A 인 경우에는 65, 소문자 a인 경우에는 97이다. 그래서 이것을 MAX() 함수를 사용하여 최대값을 찾아 낼 때는 이 코드값이 큰 소문자를 출력하게 된다.

SELECT MAX(NAME)
FROM (SELECT 'A' AS NAME
  FROM DUAL
UNION ALL
SELECT 'a' AS NAME
  FROM DUAL )

 

위의 코드를 실행하면 아래와 같이 나온다. 즉, A의 ASCII 코드값이 a의 ASCII 코드값보다 작기 때문에 MAX()를 하게 되면 a가 나온다.

 

반대로, MIN()을 하게 되면 대문자 A가 나온다.

SELECT MIN(NAME)
FROM (SELECT 'A' AS NAME
  FROM DUAL
UNION ALL
SELECT 'a' AS NAME
  FROM DUAL )

 

거기에, 같은 데이터인 경우에는 가장 최신의 데이터가 나오거나, 날짜인 경우에도 최신인 데이터를 출력해 준다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기