Считай суммы, средние значения и статистику по группам с помощью агрегатных функций и GROUP BY.
Открыть этот урок в KodokonАгрегатная функция принимает на вход несколько строк и возвращает одно значение: сумму, среднее, минимум... Самая простая - COUNT(*), которая считает строки. Она естественно сочетается с WHERE: база данных сначала фильтрует, а потом считает.
SELECT COUNT(*) FROM books;
SELECT COUNT(*) FROM books WHERE genre = 'sf';Остальные важные агрегаты применяются к столбцу: SUM(price) складывает, AVG(price) считает среднее, MIN(year) и MAX(year) находят наименьшее и наибольшее значения. Ключевое слово AS задаёт псевдоним, то есть понятное имя для вычисленного столбца.
SELECT SUM(price) AS total FROM books;
SELECT AVG(price) AS avg_sf
FROM books
WHERE genre = 'sf';
SELECT MIN(year), MAX(year) FROM books;А как получить статистику по каждой категории? Для этого нужен GROUP BY: база данных группирует строки с одинаковым значением (здесь - жанром), а затем применяет агрегат к каждой группе. В результате получается по одной строке на группу.
SELECT genre, COUNT(*) AS nb
FROM books
GROUP BY genre;
SELECT genre, AVG(price) AS avg_price
FROM books
GROUP BY genre;