III. Использование вычисляемых полей в запросах
Вычисляемое поле, включенное в запрос, позволяет получить новое поле с результатами вычисления только в таблице запроса и не создает полей в таблицах базы данных.
Рассмотрим технологию создания запроса с вычисляемым полем на примере таблицы ПРЕДМЕТ.
ЗАДАНИЕ
Пусть необходимо найти записи о предметах, в которых общее число часов по предмету не совпадает с суммой часов лекций и практики.
Для решения этой задачи рассчитаем разность между общим числом часов по предмету (поле ЧАСЫ) и суммой часов лекций (поле ЛЕК) и практики (поле ПР). В ответ включим только те записи, для которых эта разность равна нулю.
Создадим запрос на выборку для таблицы ПРЕДМЕТ. Перетащим в бланк запроса поля НП, ПР, ЛЕК, ЧАСЫ.
Создание вычисляемого поля.
Для получения разности создадим вычисляемое поле в пустой ячейке строки Поле, записав туда выражение:[ЧАСЫ]-[ПР]-[ЛЕК].
Для отбора записей с ненулевым значением разности в вычисляемом поле в строку Условие отбора введем <>0 (не равно 0). Поле ввода выражения система формирует имя вычисляемого поля по умолчанию - Выражение 1, Это имя ставится перед выражением. Для изменения имени установим курсор мыши в вычисляемом поле бланка запроса и нажмем правую кнопку мыши. В контекстно-зависимом меню выберем Свойства поля и в строку Подпись введем новое имя поля ЧАСЫ<>ПР+ЛЕК. Имя поля может быть исправлено также непосредственно в бланке запроса. Сохраним запрос под именем Разность часов по предмету.
Построенный запрос может быть использован для проверки правильности заполнения поля ЧАСЫ в таблице ПРЕДМЕТ.
V. Использование групповых операций в запросах
Назначение групповых операций
Групповые операции позволяют выделить группы записей с одинаковыми значениями в указанных полях и использовать для других полей этих групп определенную статистическую функцию. В Access предусматривается девять статистических функций:
· Sum - сумма значений некоторого поля для группы;
· Avg –среднее от всех значений поля в группе;
· Мах, Мin - максимальное, минимальное значение поля в группе;
· Count - число значений поля в группе без учета пустых значений;
· StDev - среднеквадратичное отклонение от среднего значения поля в группе;
· Var -дисперсия значений поля в группе;
· First и Last - значение поля из первой или последней записи в группе.
Результат запроса с использованием групповых операций содержит по одной записи для каждой группы. В запрос включаются поля, по которым производится группировка, и поля, для которых выполняются групповые функции.
Порядок создания запроса с использованием групповых операций
Для создания запроса с использованием групповых операций в бланк запроса включаются поля, по которым надо произвести группировку, и поля, по которым надо произвести статистические вычисления. Выполняется команда Вид-Групповые операции. Можно также нажать правую кнопку мыши и выбрать контекстно-зависимое менюГрупповая операция (курсор мыши должен быть установлен в бланке запроса). В бланке запроса появится строка Групповая операция, в которой для всех полей записаноГруппировка. Для групповых вычислений по некоторому полю нужно заменить в нем слово Группировка на нужную статистическую функцию. Выбрать функцию можно с помощью раскрывающегося списка.
Конструирование однотабличного запроса с групповой операцией
Рассмотрим технологию конструирования однотабличного запроса с групповой операцией на примере таблицы СТУДЕНТ.
Запрос с функцией Count
ЗАДАНИЕ
Создать запрос на выборку для таблицы СТУДЕНТ.
Из списка таблицы СТУДЕНТ перетащим в бланк запроса поле НГ - номер группы. Это поле создадим для указания, что по этому полю должна производиться группировка. Перетащим в бланк запроса поле НС, по которому будет вычисляться функцияСоипt для подсчета числа студентов в группе.
Нажмите кнопкуГрупповые операции, замените словоГруппировка втаблице НС на функциюСоипt. Для этого вызовите список и выберите эту функцию. Сохраните запрос под именемЧисло студентов в группах.Просмотрите запрос.
Подпись поляCount_НС замените наФактическое число студентов. Для ввода этой подписи в бланке запроса установите на поле НС курсор мыши и нажмите правую кнопку. В контекстно-зависимом меню выберитеСвойства.
В окнеСвойства поля в строкуПодпись введитеФактическое число студентов. Просмотрите запрос. Сохраните запрос под именемФ_число студентов.
Запрос с функцией Avg
ЗАДАНИЕ
Подсчитать средний проходной балл в группе.
Сформируем запрос на выборку для таблицы СТУДЕНТ с функцией Avg для поля ПБАЛЛ - средний проходной балл студентов. В бланке запроса заполните поля НГ и ПБАЛЛ. Нажмите кнопкуГрупповые операции,замените слово Группировка в таблице ПБАЛЛ на функцию Avg. Для ограничения точности результата двумя знаками выберите в окнеСвойства поля в строке Формат поля - Фиксированный. Сохраните запрос под именемСредний прох. балл.Просмотрите запрос.