В этом руководстве вы узнаете, как использовать функцию SQL Server MIN() для поиска минимального значения в наборе.
- Введение в функцию SQL Server MIN()
- Примеры функции SQL Server MIN()
- 1) Пример базовой функции SQL Server MIN()
- 2) Пример использования функции MIN() с предложением GROUP BY
- 3) Пример использования функции MIN() с предложением HAVING
- 4) Использование функции MIN() со столбцом даты
- 5) Использование функции MIN() с текстовым столбцом
- Краткое содержание
Введение в функцию SQL Server MIN()
В SQL Server функция MIN() — это агрегатная функция, которая позволяет найти минимальное значение в наборе.
Ниже показан синтаксис функции MIN():
MIN(expression)
Функция MIN() принимает выражение, которое может быть столбцом или допустимым выражением.
Функция MIN() применяется ко всем значениям, включая дубликаты. Это означает, что модификатор DISTINCT не влияет на функцию MIN(). Обратите внимание, что функция MIN() игнорирует NULL.
Примеры функции SQL Server MIN()
Для демонстрации мы будем использовать таблицы продуктов и категорий из образца базы данных.
1) Пример базовой функции SQL Server MIN()
В следующем примере функция MIN() используется для поиска самой низкой цены по прейскуранту среди всех продуктов в таблице production.products:
SELECT MIN(list_price) min_list_price FROM production.products;
Выход:
min_list_price -------------- 89.99 (1 row)
В следующем примере функция MIN() используется в подзапросе для поиска продуктов с самыми низкими ценами:
SELECT product_id, product_name, list_price FROM production.products WHERE list_price =( SELECT MIN(list_price) FROM production.products );
Выход:
product_id | product_name | list_price -----------+----------------------------------------+----------- 263 | Strider Classic 12 Balance Bike - 2018 | 89.99 (1 row)
В этом примере:
- Во-первых, подзапрос использует функцию MIN() для возврата самой низкой цены по прейскуранту.
- Затем внешний запрос находит продукты, цены по прейскуранту которых равны самой низкой цене.
Обратите внимание, что запрос вернет несколько строк, если таблица products содержит несколько строк, значения которых в столбце list_price равны 89,99.
2) Пример использования функции MIN() с предложением GROUP BY
В следующем операторе используется функция MIN() с предложением GROUP BY для поиска самой низкой цены по прейскуранту в каждой категории продуктов:
SELECT category_name, MIN(list_price) min_list_price FROM production.products p INNER JOIN production.categories c ON c.category_id = p.category_id GROUP BY category_name ORDER BY category_name;
Выход:
category_name | min_list_price --------------------+---------------- Children Bicycles | 89.99 Comfort Bicycles | 416.99 Cruisers Bicycles | 250.99 Cyclocross Bicycles | 1549.00 Electric Bikes | 1559.99 Mountain Bikes | 379.99 Road Bikes | 749.99 (7 rows)
В этом примере:
- Во-первых, предложение GROUP BY делит продукты на группы по названию категории.
- Во-вторых, примените функцию MIN() к каждой группе, чтобы найти самую низкую цену в каждой категории.
3) Пример использования функции MIN() с предложением HAVING
В следующем примере функция MIN() используется в предложении HAVING для извлечения категории продукта с минимальной ценой по прейскуранту более 500:
SELECT category_name, MIN(list_price) min_list_price FROM production.products p INNER JOIN production.categories c ON c.category_id = p.category_id GROUP BY category_name HAVING MIN(list_price) > 500 ORDER BY category_name;
Выход:
category_name | min_list_price --------------------+--------------- Cyclocross Bicycles | 1549.00 Electric Bikes | 1559.99 Road Bikes | 749.99 (3 rows)
4) Использование функции MIN() со столбцом даты
Следующий оператор использует функцию MIN() со столбцом required_date таблицы sales.orders для получения самой ранней требуемой даты всех заказов:
SELECT MIN(required_date) earliest_required_date FROM sales.orders;
Выход:
earliest_required_date ---------------------- 2016-01-03
В следующем примере функция MIN() используется для поиска самых ранних дат заказов, сделанных торговым персоналом:
SELECT s.first_name, MIN(required_date) earliest_required_date FROM sales.orders o INNER JOIN sales.staffs s ON s.staff_id = o.order_id GROUP BY s.first_name ORDER BY earliest_required_date;
Выход:
first_name | earliest_required_date -----------+----------------------- Fabiola | 2016-01-03 Mireya | 2016-01-04 Virgie | 2016-01-04 Genna | 2016-01-05 Kali | 2016-01-05 Jannette | 2016-01-06 Bernardine | 2016-01-06 Marcelene | 2016-01-07 Venita | 2016-01-07 Layla | 2016-01-08 (10 rows)
5) Использование функции MIN() с текстовым столбцом
В следующем примере функция MIN() используется для возврата первого названия продукта, отсортированного в алфавитном порядке в каждой категории:
SELECT c.category_name category_name, MIN(product_name) product_name FROM production.products p INNER JOIN production.categories c ON c.category_id = p.category_id GROUP BY c.category_name;
Выход:
category_name | product_name --------------------+------------------------------------------------ Children Bicycles | Electra Cruiser 1(24-Inch) - 2016 Comfort Bicycles | Electra Townie Balloon 3i EQ - 2017/2018 Cruisers Bicycles | Electra Amsterdam Fashion 3i Ladies' - 2017/2018 Cyclocross Bicycles | Surly Straggler - 2016 Electric Bikes | Electra Loft Go! 8i - 2018 Mountain Bikes | Haro Flightline One ST - 2017 Road Bikes | Surly ECR - 2018 (7 rows)
Краткое содержание
- Используйте функцию MIN(), чтобы найти минимальное значение в наборе значений.
- Функция MIN() игнорирует NULL.