Функция SQL Server MIN()

В этом руководстве вы узнаете, как использовать функцию SQL Server MIN() для поиска минимального значения в наборе.

Введение в функцию SQL Server MIN()

В SQL Server функция MIN() — это агрегатная функция, которая позволяет найти минимальное значение в наборе.

Ниже показан синтаксис функции MIN():

MIN(expression)

Функция MIN() принимает выражение, которое может быть столбцом или допустимым выражением.

Функция MIN() применяется ко всем значениям, включая дубликаты. Это означает, что модификатор DISTINCT не влияет на функцию MIN(). Обратите внимание, что функция MIN() игнорирует NULL.

Примеры функции SQL Server MIN()

Для демонстрации мы будем использовать таблицы продуктов и категорий из образца базы данных.

Функция 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.
Мирослав С.

Автор статей, ИБ-специалист