double arrow

Использование групповых операций в запросах


Назначение групповых операций

Групповые операции позволяют выделить группы записей с одинаковыми значениями в указанных полях и использовать для этих групп одну из ста­тистических функций.

В Access предусматривается девять статистических функций:

  • sum — сумма значений некоторого поля для группы;
  • Avg — среднее от всех значений поля в группе;
  • мах, Min — максимальное, минимальное значение поля в группе;
  • count — число значений поля в группе без учета пустых значений;
  • StDev — среднеквадратичное отклонение от среднего значения поля в группе;
  • var — дисперсия значений поля в группе;
  • First и Last — значение поля из первой или последней записи в группе.

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

Порядок создания запроса с использованием групповых операций

Для создания запроса с использованием групповых операций формируется запрос на выборку. В бланк запроса включаются поля, по которым надо | произвести группировку, и поля, по которым надо произвести статистические вычисления.

Выполняется команда Вид|Групповые операции(View|Totals) или на панели инструментов конструктора запросов нажимается кнопка Групповые операции(Totals). Можно также нажать правую кнопку мыши и выбрать в контекстном меню Групповая операция(Total) (курсор мыши должен быть уста-1новлен в бланке запроса). В бланке запроса появляется строка Групповая Операция (Total),в которой для всех полей записано группировка (Group By).




Для того чтобы выполнить вычисления в группе по некоторому полю, нужно заменить в нем слово группировка (croup By) на статистическую функцию. Выбрать необходимую функцию можно через раскрывающийся в поле список.

Рассмотрим конструирование запроса с групповой операцией на примере таблицы ПОСТАВКА_ПЛАН.

Запрос с функцией Sum

Определим, какое суммарное количество каждого из товаров должно быть Обставлено покупателям по договорам. Все данные о запланированном к Доставке количестве товара указаны в таблице ПОСТАВКА_ПЛАН.

Создадим запрос на выборку для таблицы ПОСТАВКА_ПЛАН. Из списка таблицы перетащим в бланк запроса поле код_тов — код товара. Это поле создадим для дальнейшей группировки по нему. Перетащим в бланк запроса поле кол_пост, по которому будет вычисляться функция sum для подсчета суммарного количества конкретного товара, заказанного во всех договорах.

Нажмем кнопку Групповые операции(Totals). Заменим слово группировка

(croup By) в столбце кол_пост на функцию Sum. Для этого вызовем список и выберем эту функцию. Бланк запроса примет вид, показанный на рис. 4.13.

В поле код_тов отображается не код товара, сохраняемый в таблице ПОСТАВКА_ПЛАН, а его наименование. Это определяется тем, что в таблице для поля код_тов построен список на основе таблицы товар. Если в вашей базе данных поле код_тов не преобразовано в поле со списком, как показано в главе 3, в таблице запроса будет отображаться код товара.



Подпись поляSum - КОЛ_ПОСТ можно заменить наЗаказано товаров. Дляввода этой подписи перейдем в режим конструктора, в бланке запроса установим курсор мыши на поле кол_пост и нажмем правую кнопку. В контекстном меню выберем Свойства(Properties). В окне Свойства поля(Field Properties) наберем в строке Подпись(Caption) — заказано товаров.

Таблица результата после доработки запроса показана на рис. 4А5.

Рис. 4.15. Таблица результата с измененной подписью поля

Сохраним запрос-выборку под именем "Заказано товаров".

Если необходимо подсчитать количество товаров, заказанных в каждом месяце, группировка должна быть произведена по двум полям код_тов и срок_пост, во втором поле хранится номер месяца поставки (рис. 4.16, рис. 4.17).

Если необходимо подсчитать количество товаров, заказанных в заданном месяце, предыдущий запрос нужно дополнить вводом параметра запроса в условие отбора (рис. 4.18, 4.19).

Запрос с функцией Count

Определим, сколько раз отгружался товар по каждому из договоров. Факт отгрузки фиксируется документом "Накладная".

Создадим запрос на выборку на основе таблицы накладная. Из списка таблицы накладная перетащим в бланк запроса поле ном_дог — номер договора. По этому полю должна производиться группировка. По сути, смысл задачи сводится к подсчету в таблице числа строк с одинаковым номером договора, поэтому неважно, по какому полю будет вычисляться функция count. Перетащим в бланк запроса любое поле, например, опять ном_дог.



Нажмем кнопку Групповые операции(Totals). Заменим слово группировка (Group By) в одном из столбцов с именем ном_дог на функцию count. Бланк запроса примет вид, показанный на рис. 4.20.

Сохраним запрос под именем "Число отгрузок по договорам". Результат выполнения запроса показан на рис. 4.21.







Сейчас читают про: