Задача
Вам нужно определить наименьшее или наибольшее значения множества данных.
Решение
Используйте функцию MIN() для нахождения минимального значения, а функцию MAX() – для нахождения максимального значения.
Обсуждение
Нахождение наибольшего и наименьшего значений похоже на сортировку, только вместо того, чтобы выводить все упорядоченное множество, выбираем всего одно значение с одного или другого конца отсортированного списка. Такие операции выполняются для получения ответов на вопросы о наибольшем, наименьшем, самом молодом и старом, наиболее дорогом и дешевом и т. д. Одним из способов нахождения подобных значений является использование функций MIN() и MAX().
Поскольку функции MIN() и MAX() определяют экстремальные значения множества, их можно использовать для определения диапазонов:
• Какой диапазон дат представлен строками таблицы mail? Каковы размеры самого короткого и самого длинного сообщений?
mysql> SELECT
-> MIN(t) AS earliest, MAX(t) AS latest,
-> MIN(size) AS smallest, MAX(size) AS largest
-> FROM mail;
+--------------------------+--------------------------+----------+-----------+
| earliest | latest | smallest | largest |
+--------------------------+--------------------------+----------+-----------+
| 2001-05-11 10:15:08 | 2001-05-19 22:21:51 | 271 | 2394482 |
+--------------------------+--------------------------+----------+-----------+
• Какая поездка из таблицы driver_log была самой короткой, а какая самой длинной?
mysql> SELECT MIN(miles) AS shortest, MAX(miles) AS longest
-> FROM driver_log;
+----------+---------+
| shortest | longest |
+----------+---------+
| 79 | 502 |
+----------+---------+
• Каково наибольшее и наименьшее население штата США?
mysql> SELECT MIN(pop) AS 'fewest people', MAX(pop) AS 'most people'
-> FROM states;
+-----------------+---------------+
| fewest people | most people |
+-----------------+---------------+
| 453588 | 29760021 |
+-----------------+---------------+
• Название какого штата является первым в лексическом порядке, а какого – последним?
mysql> SELECT MIN(name), MAX(name) FROM states;
+-------------+---------------+
| MIN(name) | MAX(name) |
+-------------+---------------+
| Alabama | Wyoming |
+-------------+---------------+
Функции MIN() и MAX() необязательно должны применяться непосредственно к значениям столбцов. Они работают и с выражениями, и со значениями, полученными из значений столбцов. Например, чтобы определить длины самого короткого и самого длинного названий штата, выполните следующий запрос:
mysql> SELECT MIN(LENGTH(name)) AS shortest, MAX(LENGTH(name)) AS longest
-> FROM states;
+----------+---------+
| shortest | longest |
+----------+---------+
| 4 | 14 |
+----------+---------+