Наименьшее и наибольшее
MIN(column) находит наименьшее значение столбца, MAX(column) — наибольшее. Самая дешёвая и самая дорогая игра:
SELECT MIN(price) AS cheapest,
MAX(price) AS most_expensive
FROM games;| cheapest | most_expensive |
|---|---|
| 5 | 60 |
Они работают и с текстом, и с датами. Для текста наименьшее значение — первое по алфавиту, а наибольшее — последнее, в том же порядке, в котором сортирует ORDER BY. Даты, записанные как 'YYYY-MM-DD', сортируются как даты, поэтому MIN находит самую раннюю, а MAX — самую позднюю:
SELECT MIN(city) AS first_city,
MAX(city) AS last_city,
MIN(joined) AS first_joined,
MAX(joined) AS last_joined
FROM customers;| first_city | last_city | first_joined | last_joined |
|---|---|---|---|
| Bristol | Manchester | 2023-01-15 | 2025-10-03 |
Обратите внимание: первый город — не NULL, хотя ORDER BY city ставит NULL первым. Как и другие агрегатные функции, MIN и MAX пропускают NULL.
Как видите, в одном запросе может быть несколько агрегатных функций, причём разных. Все они работают с одними и теми же строками — теми, что остались после WHERE. Краткая сводка по играм жанра Action:
SELECT COUNT(*) AS game_count,
MIN(price) AS cheapest,
MAX(price) AS most_expensive,
ROUND(AVG(price), 1) AS average_price
FROM games
WHERE genre = 'Action';| game_count | cheapest | most_expensive | average_price |
|---|---|---|---|
| 4 | 25 | 40 | 32.5 |
Типичная ошибка: вам нужно название самой дешёвой игры, и вы пишете SELECT title, MIN(price) FROM games;. В SQLite это случайно работает: с MIN и MAX он берёт остальные столбцы из строки с наименьшим или наибольшим значением, здесь это Cube Logic. Но другие базы данных сообщают об ошибке, а когда у двух игр одинаковая самая низкая цена, SQLite показывает только одну из них. Вместо этого используйте то, что знаете из урока 2, — ORDER BY price LIMIT 1, а чтобы увидеть, нет ли другой игры с такой же ценой, покажите ещё несколько строк.
Задание
- 1
Покажите дату первого и последнего заказа в столбцах
first_orderиlast_order:first_order last_order 2024-01-20 2025-12-22 - 2
Ниже подведите итоги по отзывам на Dragon Forge (
game_idравен 1): их количество, наименьшее и наибольшее число звёзд и среднее число звёзд, округлённое до 2 знаков после запятой, в столбцахreview_count,fewest_stars,most_starsиaverage_stars:review_count fewest_stars most_stars average_stars 4 3 5 4.25 - 3
А из таблицы
gamesпокажите название, которое идёт первым по алфавиту, и то, которое идёт последним, в столбцахfirst_titleиlast_title:first_title last_title Bakery Story Zombie Town