На этом шаге будут рассмотрены групповые операции.
При обработке данных в таблицах зачастую бывает необходимо учитывать в запросах не отдельные записи, а итоги, которые вычисляются или формируются определенным образом для различных групп записей в таблице. Например, необходимо выполнить запрос, в котором для каждого студента, было бы подсчитано количество полученных им оценок, а также вычислен средний балл. И затем на основании среднего балла определена стипендия, например, из расчета 100 р. за каждый балл. Другими словами, для отличника (средний балл = 5) размер стипендии должен составить 500 р.
Чтобы выполнить подобные вычисления, необходимо создать новый запрос в режиме конструктора, добавить в него с помощью кнопки Отобразить таблицу таблицы Студенты и Успеваемость, и затем воспользоваться кнопкой Групповые операции . После этого среди параметров запроса появится строка Групповые операции.
Чтобы вычислить для каждого студента его средний балл, необходимо вначале добавить в запрос поле Фамилия таблицы Студенты. При этом в строке Групповые операции по умолчанию устанавливается значение Группировка.
Итак, для каждой фамилии студента во втором столбце необходимо расположить общее количество оценок, полученных каждым студентом, в третьем - средний балл, и в четвертом - размер начисленной стипендии. Для этого во второй и третий столбцы запроса следует добавить поле Оценки таблицы Успеваемость, так как на основании именно этого поля будет определяться общее число оценок, а также вычисляться средний балл каждого студента.
При выполнении групповых операций можно использовать так называемые итоговые функции (таблица 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. Результат выполнения запроса СреднийБалл
Создание запроса с вычисляемым полем можно увидеть здесь, а взять клип здесь.
На следующем шаге вы познакомитесь с перекрестными запросами.