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 )
거기에, 같은 데이터인 경우에는 가장 최신의 데이터가 나오거나, 날짜인 경우에도 최신인 데이터를 출력해 준다.
'Language > SQL' 카테고리의 다른 글
[SQL] SQL REGEXP_SUBSTR LEVEL CONNECT BY 정리 (0) | 2022.08.11 |
---|---|
[SQL] SQL IN EXISTS 속도 차이 (2) | 2022.08.11 |
[SQL] SQL SELECT 쿼리문 실행순서 정리 (0) | 2022.07.17 |
[SQL] SQL 인덱스란? (3) | 2022.07.12 |
[SQL] SQL 옵티마이저란? (0) | 2022.07.10 |
[SQL] SQL 튜닝 유형 - 인덱스(Index) (0) | 2022.07.08 |
[SQL] SQL 쿼리를 짤 때 주의해야 하는 것들 (0) | 2022.07.07 |
[SQL] SQL 실행계획이란? (0) | 2022.07.07 |
최근댓글