ACCESS 2003 Вычисления с группировкой в запросах Теория Если для вычисления некоторого значения в запросе требуется информация из нескольких записей таблиц, то записи необходимо предварительно сгруппировать. Для группировки используется сортировка, затем по группе выполняются вычисления. Групповые функции: Sum – сумма значений некоторого поля по группе; Count – количество записей в группе; Avg – среднее значение некоторого поля в группе; Max – максимальное значение некоторого поля в группе; Min – минимальное значение некоторого поля в группе. Пример группы 1 В этом примере записи сгруппированы по номеру магазина и дате продажи. В каждой группе по полю Сумма можно посчитать: Sum = 715,00 р. Count = 3; Max= 600,00 р.; Min = 50,00 р. Sum = 450,00 р. Count = 4; Max= 184,00 р.; Min = 70,00 р. Пример группы 2 В этом примере записи сгруппированы по номеру магазина и категории. Пример 1 Определить общее количество хлеба, проданное базой за все даты. Важно понять, какой вид должна иметь таблица, которая получится в результате выполнения запроса. В нашем случае, это будет одна строка (так как будет только одна группа), состоящая из названия товара «хлеб» и общего количества проданных единиц этого товара. Поэтому нужно выполнить группировку по полю «наименование товара». То есть все записи, у которых значения поля «наименование товара» совпадают, объявляются группой. По этому же полю выполняется отбор, то есть выбирается группа с наименованием товара «хлеб». По этой группе нужно найти сумму значений поля «количество». Пример 1 Перенесем необходимые поля в бланк запроса. Для того чтобы в бланке запроса появилась строка Групповая операция нажмем на Пример 1 В поле Наименование оставим Группировка, а в поле Количество выберем групповую операцию SUM Пример 1 Результат на бланке: Результат выполнения: Пример 2 Определить общую стоимость хлеба, купленного за все время. В этом примере группировка и отбор выполняется по тому же полю, что и в первом примере. Групповая операция (Sum) выполняется по вычисляемому полю «Сумма»=«Цена»*«Количество». Пример 3 Вычислить стоимость хлебопродуктов, проданных за каждый день. Каждая строка таблицы, которая получится в результате выполнения запроса, должна начинаться с даты продажи, затем должна стоять общая сумма продаж хлебопродуктов за данную дату. В таблице должно быть столько строк, сколько дней продавали хлебопродукты. Поэтому нужно выполнить группировку по полю «дата продажи», по полю Наименование категории выполняется отбор (Хлебопродукты), а по вычисляемому полю «Сумма»=«Цена»*«Количество» выполняется Пример 3 В поле Дата продажи оставим Группировка, в вычисляемом поле Сумма выберем групповую операцию SUM, а в поле Наименование из таблицы Категории выберем Условие и в строке Условие отбора напишем Хлебопродукты. Знак вывода на экран в этом поле автоматически убирается. Пример 3 Результат выполнения запроса: Пример 4 Для каждого товара определить количество продаж. Сортировка по категории товара. Каждая строка таблицы, которая получится в результате выполнения запроса, должна начинаться с наименования товара, затем должно стоять число, которое указывает сколько раз этот товар покупали. В таблице должно быть столько строк, сколько продали товаров. Поэтому нужно выполнить группировку по полю «наименование товара» и подсчитать количество записей в группе. Для этого используется групповая функция Count. Пример 4 Групповую функцию Count (для подсчета записей в группе) можно использовать для любого поля из таблицы «Продажи», выберем, например, поле Код товара. Для того чтобы отсортировать запрос по категории товара, нужно поле «код категории» поместить в конец бланка, так как иначе неверно будет выполняться группировка. Пример 4 Результат: Сортировка по категории товара проявляется в том, что сначала выводятся товары с кодом категории 1 (молочные продукты), затем с кодом 2(колбасные изделия) и так далее. Пример 5 Для каждого магазина за каждый день вычислить общую стоимость купленного им товара. Сортировка по номерам магазинов и датам продаж. Каждая строка таблицы, которая получится в результате выполнения этого запроса, должна начинаться с номера магазина, затем должна стоять дата, затем должна стоять общая сумма на которую этот магазин за этот день купил товаров. Количество строк в таблице = магазин*дата. Поэтому нужно выполнить группировку по номеру магазина и по дате продажи. Причем, поля в бланке запроса нужно располагать в том порядке, в котором это нужно для группировки. Групповая операция (Sum) выполняется по вычисляемому полю «Сумма»=«Цена»*«Количество». Пример 5 Бланк запроса: Результат выполнения запроса: