CodeGym /행동 /SQL SELF /최소값과 최대값: MIN() 그리고 MAX()

최소값과 최대값: MIN() 그리고 MAX()

SQL SELF
레벨 7, 레슨 4
사용 가능

이제 데이터에서 극단값을 찾는 세상으로 들어가 보자 — 최소값과 최대값 찾기! 걱정하지 마, SQL이 뭔가 엄청 새로운 걸 요구하진 않아. 대신 테이블에서 제일 크거나 작은 값을 뽑는 방법을 배울 거야. 이 함수들은 진짜 어디서나 써: IMDb 영화 평점 분석부터 화성의 최저 온도 계산까지!

MIN()랑 MAX()는 집계 함수야. 데이터 집합에서 각각 최소값과 최대값을 반환해. 얘네는 극단값 사냥꾼 같은 존재지: MIN()는 제일 작은 걸 찾고, MAX()는 반대로 제일 큰 걸 찾아. 숫자에만 쓰는 게 아니라 문자열이나 날짜에도 쓸 수 있어.

-- MIN과 MAX 함수의 기본 형태
SELECT 
    MIN(column_name) AS min_value,
    MAX(column_name) AS max_value
FROM table_name;

진짜 쉽지? 이제 이 마법이 다양한 상황에서 어떻게 동작하는지 보자.

문법과 기본 예시

숫자 데이터

예를 들어 employees 테이블이 있고, 거기에 직원들의 월급(salary) 컬럼이 있다고 해보자.

최소 월급과 최대 월급을 알고 싶어.

employees 테이블

id name salary
1 Anna Song 45000
2 Otto Art 30000
3 Maria Chi 120000
4 Alex Lin 90000
5 Eva Tan 60000
-- 숫자 데이터 예시
SELECT 
    MIN(salary) AS min_salary,
    MAX(salary) AS max_salary
FROM employees;

결과

min_salary max_salary
30000 120000

문자열 데이터

MIN()와 MAX()는 문자열에도 쓸 수 있어.

알파벳 순서로 비교해 (맞아, 문자도 "제일 작고" "제일 큰" 게 있어!).

예를 들어 students 테이블에 name 컬럼이 있다고 해보자.

students 테이블

id name
1 Anna
2 Otto
3 Maria
4 Ben
5 Zoe
-- 문자열 데이터 예시
SELECT 
    MIN(name) AS first_name_in_order,
    MAX(name) AS last_name_in_order
FROM students;

결과

first_name_in_order last_name_in_order
Anna Zoe

날짜와 시간
events 테이블에서 제일 이른 날짜와 제일 늦은 날짜를 찾아보자.

events 테이블

id event_name event_date
1 New Year Party 2023-01-01
2 Summer Fest 2023-06-15
3 Halloween Bash 2023-10-31
4 Year End Gala 2023-12-31
-- 날짜 데이터 예시
SELECT 
    MIN(event_date) AS earliest_date,
    MAX(event_date) AS latest_date
FROM events;

결과

earliest_date latest_date
2023-01-01 2023-12-31

MIN()와 MAX()를 NULL 값이 있는 테이블에서 쓰기

컬럼에 NULL 값이 있어도 걱정 마! SQL은 계산할 때 NULL을 그냥 무시해.

즉, MIN()와 MAX()는 "정상" 값만 가지고 동작해.

employees_with_null 테이블

id name salary
1 Otto 30000
2 Maria NULL
3 Anna 120000
4 John NULL
-- NULL이 있는 테이블 예시
SELECT 
    MIN(salary) AS min_salary,
    MAX(salary) AS max_salary
FROM employees_with_null;

salary 컬럼에 NULL이 있어도 그냥 무시돼.

min_salary max_salary
30000 120000

근데 컬럼 전체가 NULL이면 결과도 NULL이야.

실전에서 MIN()와 MAX() 쓰는 예시

가장 나이 많은 직원과 가장 어린 직원 찾기

employees 테이블

id name birth_date
1 Otto 1980-05-10
2 Maria 1990-11-20
3 Anna 1975-03-15
4 John 2000-08-01

employees 테이블에 birth_date 필드가 있는데, 이게 직원 생일이야. 제일 나이 많은 사람과 어린 사람을 찾아보자.

SELECT
    MIN(birth_date) AS oldest_employee,
    MAX(birth_date) AS youngest_employee
FROM employees;

결과:

oldest_employee youngest_employee
1975-03-15 2000-08-01

판매 분석

id amount
1 150.00
2 75.50
3 200.00
4 120.00
5 500.00
6 90.00

sales 테이블에 amount 필드가 있는데, 이게 판매 금액이야. 최소 판매액과 최대 판매액을 찾아보자.

SELECT
    MIN(amount) AS smallest_sale,
    MAX(amount) AS largest_sale
FROM sales;

쿼리 결과

smallest_sale largest_sale
75.50 500.00

가장 첫 주문과 마지막 주문 찾기

orders 테이블에 order_date 필드가 있으면, 첫 주문 날짜와 마지막 주문 날짜를 쉽게 찾을 수 있어.

원본 orders 테이블

order_id customer_id order_date amount
101 1 2023-01-15 10:23:00 250.00
102 2 2023-02-10 14:45:00 150.00
103 3 2023-01-05 09:10:00 300.00
104 1 2023-03-22 16:30:00 500.00
105 4 2023-01-25 11:00:00 120.00
SELECT
    MIN(order_date) AS first_order,
    MAX(order_date) AS last_order
FROM orders;

쿼리 결과:

first_order last_order
2023-01-05 09:10:00 2023-03-22 16:30:00

MIN()와 MAX()의 특징

문자열 비교: 문자열에서 MIN()와 MAX()는 알파벳 순서로 비교해.

NULL 처리: 컬럼에 다른 값이 있으면 NULL은 무시돼. 근데 전부 NULL이면 결과도 NULL이야.

날짜 비교: SQL은 연도뿐 아니라 월, 일, 시, 분까지 다 따져서 비교해.

2
과제
SQL SELF, 레벨 7, 레슨 4
잠금
최소 및 최대 수량 찾기
최소 및 최대 수량 찾기
2
과제
SQL SELF, 레벨 7, 레슨 4
잠금
가장 오래된 생년월일과 가장 최근 생년월일 찾기
가장 오래된 생년월일과 가장 최근 생년월일 찾기
1
설문조사/퀴즈
데이터 집계, 레벨 7, 레슨 4
사용 불가능
데이터 집계
데이터 집계
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION