В этом руководстве вы узнаете, как использовать функцию SQL Server MAX() для поиска максимального значения в наборе.
- Введение в функцию SQL Server MAX()
- Примеры функций SQL Server MAX()
- 1) Базовый пример функции SQL Server MAX()
- 2) Пример использования MAX() с предложением GROUP BY
- 3) Пример использования MAX() с предложением HAVING
- 4) Использование функции MAX() со столбцами дат
- 5) Использование функции MAX() с текстовым столбцом
- Краткое содержание
Введение в функцию SQL Server MAX()
В SQL Server функция MAX() — это агрегатная функция, которая возвращает максимальное значение в наборе.
Вот синтаксис функции MAX():
MAX(expression)
Функция MAX() принимает выражение, которое может быть столбцом или допустимым выражением.
Подобно функции MIN(), функция MAX() игнорирует NULL и учитывает все значения, включая дубликаты.
Примеры функций SQL Server MAX()
Для демонстрации мы будем использовать таблицы продуктов и брендов:
1) Базовый пример функции SQL Server MAX()
Следующий оператор использует функцию MAX() для поиска самой высокой цены по прейскуранту среди всех продуктов в таблице продуктов:
SELECT MAX(list_price) max_list_price FROM production.products;
Выход:
max_list_price -------------- 11999.99
В следующем примере функция MAX() используется в подзапросе для поиска самой высокой цены по прейскуранту, а внешний запрос — для извлечения продуктов с самыми высокими ценами:
SELECT product_id, product_name, list_price FROM production.products WHERE list_price =( SELECT MAX(list_price) FROM production.products );
Выход:
product_id | product_name | list_price -----------+-------------------------------+----------- 155 | Trek Domane SLR 9 Disc - 2018 | 11999.99 (1 row)
В этом примере:
- Сначала используйте функцию MAX() в подзапросе, чтобы вернуть самую высокую цену по прейскуранту среди всех продуктов.
- Затем извлеките продукты, цены по прейскуранту которых равны самой высокой цене, возвращенной подзапросом во внешнем запросе.
2) Пример использования MAX() с предложением GROUP BY
В следующем операторе используется функция MAX() с предложением GROUP BY для извлечения названий брендов и максимальной цены по прейскуранту для каждого бренда:
SELECT brand_name, MAX(list_price) max_list_price FROM production.products p INNER JOIN production.brands b ON b.brand_id = p.brand_id GROUP BY brand_name ORDER BY brand_name;
Выход:
В этом примере:
- Сначала разделите продукты на группы по названиям брендов, используя предложение GROUP BY.
- Затем примените функцию MAX() к каждой группе, чтобы получить самую высокую цену по прейскуранту для каждого наименования бренда.
3) Пример использования MAX() с предложением HAVING
В следующем примере извлекаются названия брендов и соответствующие им самые высокие цены по прейскуранту, а также отфильтровываются бренды с самыми высокими ценами по прейскуранту, которые меньше или равны 1000:
SELECT brand_name, MAX(list_price) max_list_price FROM production.products p INNER JOIN production.brands b ON b.brand_id = p.brand_id GROUP BY brand_name HAVING MAX(list_price) > 1000 ORDER BY max_list_price DESC;
Выход:
brand_name | max_list_price -------------+-------------- Trek | 11999.99 Electra | 2999.99 Heller | 2599.00 Surly | 2499.99 Sun Bicycles | 1559.99 Haro | 1469.99 (6 rows)
4) Использование функции MAX() со столбцами дат
В следующем примере функция MAX() используется для поиска заказов с самой поздней требуемой датой:
SELECT MAX(required_date) latest_required_date FROM sales.orders;
Выход:
latest_required_date -------------------- 2018-12-28
В следующем примере функция MAX() используется с предложением GROUP BY для поиска последней требуемой даты всех заказов, сгруппированных по именам сотрудников:
SELECT s.first_name, MAX(required_date) latest_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 latest_required_date;
Выход:
first_name | latest_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) Использование функции MAX() с текстовым столбцом
Следующий оператор использует функцию MAX() для возврата последних названий продуктов, отсортированных в алфавитном порядке в каждой категории:
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)
Краткое содержание
- Используйте функцию MAX(), чтобы найти максимальное значение в наборе значений.
- Функция MAX() игнорирует NULL.