Вычисления
на выделенных записях таблицы
В предыдущем
примере расчеты производились над всеми имеющимися в таблице "Заказы"
(Orders) записями. Однако часто требуется выполнить вычисления над определенным
набором данных и, основываясь на них, составить статистику. Для этого нужно
добавить в запрос условия для выборки нужного набора записей. Например, мы можем
изменить предыдущий запрос таким образом, чтобы получить данные не по всем клиентам,
а только по тем, которые находятся в Германии. Для этого:
В ней используются
две статистические функции— Count () и Sum () — и предложение WHERE, содержащее
условие отбора записей.
Рис. 8.23.
Задание условия отбора записей в запросе "Итоги по клиентам"
Рис. 8.24.
Сообщение об ошибке при попытке отобразить поле, для которого задано условие
Рис. 8.25.
Результаты запроса "Итоги по клиентам по городам"
Статистические
функции можно использовать также в вычисляемых полях запроса. Например, для
создания запроса "Итоги по клиентам" мы могли бы нместо запроса "Сведения
о заказах" использовать прямо таблицу "Заказано". На рис. 8.26
показано вычисляемое поле "Стоимость". В выражение для этого поля
включена функция Sum ():
Стоимость:
Sum(CCur([Заказано].[Цена]*[Количество]*(1-[Скидка])/100) *100)
Тогда в строке
Групповая операция
(Total) для этого столбца должен быть выбран элемент
Выражение
(Expression). При использовании группировки по полю "КодЗаказа",
поле "Стоимость" будет содержать общую стоимость заказа.
Можно создать
и другое вычисляемое поле:
Стоимость:
CCur([Заказано].[Цена]*[Количество]*(1-[Скидка])/100) *100,
а функцию
Sum () использовать в строке
Групповая операция
(Total). Оба варианта
будут правильны.
Можно изменить
этот запрос таким образом, чтобы посчитать общее число клиентов, заказов и общую
сумму всех заказов. В этом случае результатом запроса будет одна строка, содержащая
итоговые значения по всем полям. К сожалению, нельзя построить запрос, результатом
которого была бы таблица, содержащая как детальные, так и итоговые данные, как
это обычно бывает в таблицах Excel. Такое представление данных можно организовать
только в сводных таблицах.
Рис. 8.26.
Использование статистической функции в выражении для вычисляемого поля
Внимание
Статистические функции при вычислениях не обрабатывают записи, которые имеют значение Null в том поле, к которому они применяются. Поэтому нужно быть осторожным при использовании функции Count (). Она будет считать только те записи, которые не содержат пустых значений. Если нужно сосчитать все записи в результирующем наборе или группе, используйте функцию Nz (<имя поля>), которая преобразует пустое значение в 0, и только потом суммируйте.