Агрегирование данных
При работе с данными часто возникают задачи по обработке набора некоторых значений, такие как подсчёт количества, суммы, среднего значения и т. д. Операции такого типа называются агрегированием. Во время работы с базами данных под агрегированием понимается выполнение действий над значениями в различных строках таблицы посредством специальных функций, которые называются функциями агрегирования, или просто агрегаторами.
Рассмотрим типичные задачи, которые требуют применения функций агрегирования:
● определение среднего значения;
● подсчёт количества;
● определение максимального и минимального значения;
● подсчёт суммы.
Понятие группировки, нахождение среднего значения
В общем случае применяется функция агрегирования к данным всей таблицы. Например, найдём среднюю оценку всех учеников. Для этого воспользуемся функцией нахождения среднего значения AVG():
sqlite> SELECT AVG(grade) FROM grades; AVG(grade) ------------------ 4.95 sqlite> |
|
|
Но как быть, если нам надо найти среднюю оценку по всем курсам для каждого ученика? В этом случае потребуется группировка. То есть надо явным образом указать, по какому набору строк мы хотим подсчитать результат. Если нам требуются данные в разрезе учеников, то логично в качестве значения для группировки указать идентификатор ученика:
sqlite> SELECT student_id, AVG(grade) FROM grades GROUP BY student_id; student_id AVG(grade) ---------- ------------------ 1 4.93333333333333 2 5.0 sqlite> |
Проще говоря, в выражении GROUP BY нам надо определить группы, к значениям которых применится функция агрегирования.
В общем виде команда агрегирования выглядит так:
SELECT 'Функция Агрегирования' FROM 'Имя Таблицы' GROUP BY 'Столбец Группировки'; |