Суммирование при помощи функций MIN() и MAX()

Задача
Вам нужно определить наименьшее или наибольшее значения множества данных.

Решение
Используйте функцию 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 |
+----------+---------+.



Оцените статью: (0 голосов)
0 5 0

Статьи из раздела MySQL на эту тему:
Выбор групп только с определенными характеристиками
Группирование по результатам выражения
Использование ключевого слова DISTINCT для удаления дубликатов
Итоги и значения NULL
Итоги по датам

Вернуться в раздел: MySQL / 7. Формирование итогов