Вычисления на выделенных записях таблицы
В предыдущем примере расчеты производились над всеми имеющимися в таблице "Заказы" (Orders) записями. Однако часто требуется выполнить вычисления над определенным набором данных и, основываясь на них, составить статистику. Для этого нужно добавить в запрос условия для выборки нужного набора записей. Например, мы можем изменить предыдущий запрос таким образом, чтобы получить данные не по всем клиентам, а только по тем, которые находятся в Германии. Для этого:
Откройте запрос "Итоги по клиентам", который мы построили в предыдущем разделе, в режиме Конструктора.
Перетащите поле "Страна" (Country) из таблицы "Клиенты" (Customers) в бланк запроса. В строке
Групповая операция
(Total) для этого поля появляется элемент
Группировка
(Group by).
Замените элемент
Группировка
(Group by) на элемент
Условие
(Where), выбрав его из списка (рис. 8.23). При этом автоматически сбрасывается флажок (Show) в данном столбце. Это означает, что в результат запроса поле "Страна" не попадет. Если вы попытаетесь установить этот флажок, то при выполнении запроса будет выведено сообщение об ошибке (рис. 8.24). Действительно, если мы хотим, чтобы поле "Страна" отобразилось в результате запроса, его нужно добавить в бланк запроса второй раз, при этом в строке
Групповая операция
(Total) данного столбца нужно оставить элемент
Группировка
(Group by) и установить флажок
Вывод на экран
(Show).
Введите слово Германия в ячейку
Условие отбора
(Criteria) первого столбца "Страна" (того, который не выводится на экран).
Выберите команду
Вид, Режим SQL
(View, SQL View) или щелкните по стрелке на кнопке Вид (View) и выберите значение
Режим SQL
(SQL View) для вывода инструкции SQL. Она будет выглядеть следующим образом: SELECT Клиенты.Название, Count(Заказы.КодЗаказа) AS [CountOfKoд3a каза], Sum([Сведения о заказах].ОтпускнаяЦена) AS [SumOfОтпускная Цена], Клиенты.Страна, Клиенты.Страна FROM Клиенты INNER JOIN ([Сведения о заказах] INNER JOIN Заказы ON [Сведения о заказах].КодЗаказа = Заказы.КодЗаказа) ON Клиенты.КодКлиента = Заказы.КодКлиента WHERE (((Клиенты.Страна)="Германия")) GROUP BY Клиенты.Название, Клиенты.Страна;
В ней используются две статистические функции— Count () и Sum () — и предложение WHERE, содержащее условие отбора записей.