/
Вопросы и ответы
/
SQL
/

Как вывести максимальное значение в sql

Как вывести максимальное значение в sql

5 лет назад

Человек-Молекула

Ответы

1

MAX() - это одна из агрегатных функций, доступных в SQL, которая помогает получить наибольшее значение среди нескольких значений, указанных в столбце.

Например, команда ниже вернёт из таблицы univerities название университета с максимальным количеством студентов и само количество студентов

1
2
SELECT MAX(students_count), univerity_name
FROM univerities

4 года назад

Aleksandr Litvinov

0

Используйте функцию MAX(). Вот небольшой пример:

1
2
-- Найдём максимальную цену автомобиля
SELECT MAX(price) FROM cars;

4 года назад

Roman Ashikov

0

Максимальное значение столбца возвращает агрегатная функция MAX():

1
2
SELECT MAX(price) AS max_price
FROM products;

MAX() пропускает NULL. Работает с числами, датами и строками: для дат вернёт самую позднюю, для строк — последнюю по алфавиту.

Вся строка с максимальным значением

SELECT name, MAX(price) FROM products выдаст ошибку или случайное name: агрегатная функция не знает, из какой строки брать остальные столбцы. Самый дорогой товар целиком:

1
2
3
4
SELECT *
FROM products
ORDER BY price DESC
LIMIT 1;

Если товаров с максимальной ценой несколько, LIMIT 1 вернёт один из них. Все такие товары — через подзапрос:

1
2
3
SELECT *
FROM products
WHERE price = (SELECT MAX(price) FROM products);

Максимум по группам

Самая высокая цена в каждой категории:

1
2
3
SELECT category_id, MAX(price) AS max_price
FROM products
GROUP BY category_id;

Самый дорогой товар в каждой категории целиком — оконной функцией:

1
2
3
4
5
6
SELECT *
FROM (
  SELECT p.*, RANK() OVER (PARTITION BY category_id ORDER BY price DESC) AS r
  FROM products p
) t
WHERE r = 1;

RANK() оставит все товары, если у нескольких одинаковая максимальная цена. Только один на категорию — ROW_NUMBER().

Максимум из нескольких столбцов в строке

MAX() работает по строкам таблицы. Наибольшее из значений в одной строке возвращает GREATEST():

1
2
SELECT name, GREATEST(q1_sales, q2_sales, q3_sales, q4_sales) AS best_quarter
FROM managers;

GREATEST() есть в PostgreSQL, MySQL и Oracle. В SQL Server она появилась в версии 2022.

Минимум

Наименьшее значение — MIN(), работает так же.

Агрегатные функции и группировку разбирают в бесплатном курсе «Основы SQL».

7 дней назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845