Шаг 36.
Групповые операции

   На этом шаге будут рассмотрены групповые операции.

   При обработке данных в таблицах зачастую бывает необходимо учитывать в запросах не отдельные записи, а итоги, которые вычисляются или формируются определенным образом для различных групп записей в таблице. Например, необходимо выполнить запрос, в котором для каждого студента, было бы подсчитано количество полученных им оценок, а также вычислен средний балл. И затем на основании среднего балла определена стипендия, например, из расчета 100 р. за каждый балл. Другими словами, для отличника (средний балл = 5) размер стипендии должен составить 500 р.

   Чтобы выполнить подобные вычисления, необходимо создать новый запрос в режиме конструктора, добавить в него с помощью кнопки Отобразить таблицу таблицы Студенты и Успеваемость, и затем воспользоваться кнопкой Групповые операции . После этого среди параметров запроса появится строка Групповые операции.

   Чтобы вычислить для каждого студента его средний балл, необходимо вначале добавить в запрос поле Фамилия таблицы Студенты. При этом в строке Групповые операции по умолчанию устанавливается значение Группировка.

   Итак, для каждой фамилии студента во втором столбце необходимо расположить общее количество оценок, полученных каждым студентом, в третьем - средний балл, и в четвертом - размер начисленной стипендии. Для этого во второй и третий столбцы запроса следует добавить поле Оценки таблицы Успеваемость, так как на основании именно этого поля будет определяться общее число оценок, а также вычисляться средний балл каждого студента.

   При выполнении групповых операций можно использовать так называемые итоговые функции (таблица 1), которые следует выбирать из списка в добавленном поле Групповые операции.

Таблица 1. Основные итоговые функции
Функция Описание
Sum
Суммирование значений в группе
Avg
Среднее значение для группы
Мin
Минимальное значение для группы
Max
Максимальное значение для группы
Count
Подсчет числа значений в группе
First
Значение поля в первой записи группы
Last
Значение поля в последней записи группы

   Для подсчета количества полученных оценок следует выбрать функцию Count, а для определения среднего балла - функцию Avg. Затем созданный запрос следует сохранить, указав ему имя СреднийБалл.

   Чтобы вычислить размер стипендии, необходимо создать выражение, с помощью построителя выражений. Для этого вначале следует выбрать в строке Групповые операции четвертого столбца запроса с помощью разворачивающегося списка пункт Выражение. Затем нужно, находясь в этом поле, нажать кнопку Построить и указать в построителе выражений формулу для вычисления размера стипендии. В данной формуле будет использоваться поле групповой операции с функцией Avg, полученное ранее.

   Следует отметить, что подобным полям в запросах, как и вычисляемым полям, Access автоматически присваивает имена. В частности, поле, содержащее количество оценок, было названо Count-Оценка, а поле со средним баллом было названо Аvg-Оценка. Следовательно, в окне Построитель выражений необходимо в формуле для стипендии использовать поле Avg-Оценка сохраненного запроса СреднийБалл. Т.е. нужно вставить в формулу поле Avg-Оценка из папки СреднийБалл и умножить это значение на 100 для определения размера стипендии (рис. 1). Однако необходимо иметь в виду, что если бы рассматриваемый запрос не был сохранен, то в Построителе выражений не появились бы поля Cоunt-Оценка и Avg-Оценка.


Рис. 1. Построитель выражений. Определение размера стипендии

   После установки всех описанных параметров макет запроса будет иметь вид, который представлен на рисунке 2.


Рис. 2. Макет запроса с использованием групповых операций

   При выполнении созданного таким образом запроса будут определены количество оценок, средний балл и размер стипендии для каждого студента. Однако названия полей с групповыми операциями (количество оценок и средний балл) и выражением (стипендия) были созданы автоматически и не являются в достаточной степени информативными. Поэтому следует изменить свойства полей, установив им подписи. Для этого необходимо открыть запрос в режиме конструктора, и в окне свойств (кнопка ) для каждого из этих полей указать в строке подпись названия КоличествоОценок, СреднийБалл и Стипендия, соответственно.

   Результатом выполнения запроса СреднийБалл будет набор записей, представленный на рисунке 3.


Рис. 3. Результат выполнения запроса СреднийБалл

Создание запроса с вычисляемым полем можно увидеть здесь, а взять клип здесь.

   На следующем шаге вы познакомитесь с перекрестными запросами.



Предыдущий шаг Содержание Следующий шаг