COUNT, SUM, AVG, MIN, MAX
087 мин
«Сколько всего студентов?», «какой средний балл?», «сколько стоит самый дорогой товар?» — такие вопросы превращают много строк в одно число. Для этого есть агрегатные функции.
Пять основных функций
| Функция | Что делает |
|---|---|
COUNT(*) |
количество строк |
SUM(столбец) |
сумма |
AVG(столбец) |
среднее |
MIN(столбец) |
минимум |
MAX(столбец) |
максимум |
university
university
Вместе с WHERE
Сначала отбираются строки, потом считается:
university
COUNT(*), COUNT(столбец) и COUNT(DISTINCT …)
COUNT(*)— все строки;COUNT(phone)— только строки, гдеphoneне пустой;COUNT(DISTINCT city)— сколько разных городов.
university
Агрегаты не учитывают NULL: AVG(scholarship) даст среднее только по тем, кто получает стипендию.
Важное правило
Агрегат и обычный столбец нельзя просто поставить рядом:
SELECT city, COUNT(*) FROM students; -- ошибка!База не знает, какой city показать: строка в результате одна, а городов много. Чтобы посчитать для каждого города отдельно, нужен GROUP BY. Это следующий урок.
1Упражнение
Сколько всего товаров в магазине и какова их средняя цена? Два столбца: количество и средняя цена, округлённая до целого.
2Упражнение
Какова общая выручка (сумма fare) по завершённым (status = 'completed') поездкам?
Запомните
COUNT,SUM,AVG,MIN,MAX— одно значение из многих строк.- Агрегаты пропускают
NULL;COUNT(*)считает все строки. - Нужны и обычный столбец, и агрегат — значит, нужен
GROUP BY.