JavaRush /Курси /SQL SELF /Мінімальні та Максимальні значення: MIN() і...

Мінімальні та Максимальні значення: 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 ігнорує їх при обчисленнях.

Це означає, що 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 враховує не лише числове значення року, а й місяць, день, години, хвилини.

1
Опитування
Агрегація даних, рівень 7, лекція 4
Недоступний
Агрегація даних
Агрегація даних
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ