Access итоговая сумма в запросе
Итоговый запрос из базы данных Access
Запросы позволяют не только выбирать записи из таблиц Access, но и вычислять различные статистические параметры. Например, можно подсчитать суммарное количество контактов и вывести даты первого и последнего контакта с каждым из людей, включенных в таблицу Контакты. Чтобы построить такой запрос в режиме конструктора, выполните следующие действия.
1. В окне базы данных щелкните на кнопке Запросы.
2. Дважды щелкните на значке Создание запроса в режиме конструктора.
3. В открывшемся окне диалога (рис. 17.6) выделите строку Контакты.
4. Щелчком на кнопке Добавить добавьте выбранную таблицу в верхнюю область конструктора запроса.
5. Выделите пункт Список и снова щелкните на кнопке Добавить.
6. Щелчком на кнопке Закрыть закройте окно диалога Добавление таблицы. Списки полей двух таблиц, соединенные линией связи, появятся в окне конструктора.
7. Щелкните на кнопке Групповые операции панели инструментов. В бланке запроса появится дополнительная строка Групповая операция, позволяющая выполнять статистические операции со значениями конкретных полей.
Рис. 17.6 . Добавление таблицы
8. Перетащите поле Фамилия в ячейку Поле первого столбца конструктора.
9. В ту же ячейку второго столбца перетащите поле Имя таблицы Контакты.
10. В третий, четвертый и пятый столбцы бланка запроса перетащите поле Дата таблицы Список (рис. 17.7).
Рис. 17.7. Запрос с групповыми операциями
11. В раскрывающемся списке ячейки Групповая операция третьего столб ца бланка запроса выберите пункт Min.
12. В той же ячейке четвертого столбца выберите пункт Мах.
13. В пятом столбце задайте групповую операцию Count. Групповые операции построенного запроса обработают все записи таблицы Список, соответствующие конкретному человеку из таблицы Контакты, и вместо самих данных таблицы Список выведут в соответствующее поле результата запроса только значение величины, вычисляемой по определенной формуле. Доступные групповые операции перечислены в табл. 17.1.
ТАБЛИЦА 17.1 . Групповые операции
Примечание Поскольку в пятом поле запроса вычисляется количество записей, в ячейку Поле этого столбца можно поместить любое поле таблицы Список.
14. Щелкните на кнопке Вид, чтобы выполнить запрос. Появится таблица с пятью столбцами. Два первых столбца содержат фамилии и имена людей. По ним выполняется группировка, то есть расчет значений остальных полей запроса выполняется для записей таблицы Список, сопоставляемых с одним человеком. Как уже говорилось выше, соответствие контакта таблицы Список и человека из таблицы Контакты определяется полями Код_Контакты, с помощью которых осуществляется связь этих двух таблиц. Третий и четвертый столбцы запроса выводят соответственно дату первого (функция Min) и последнего (функция Мах) контакта с данным человеком. Пятый столбец содержит количество записей в таблице Список (функция Count), соответствующих. данному человеку, то есть число контактов с ним. Единственный недостаток построенного запроса — это непонятные имена столбцов. Давайте скорректируем их.
15. Щелчком на кнопке Вид вернитесь в конструктор запроса.
16. В ячейке Поле третьего столбца замените имя Дата на текст Дата первого контакта: Дата. Правая часть этого выражения, расположенная правее двоеточия, по-прежнему задает имя поля, а левая определяет название столбца результата запроса. Таким образом, любому столбцу запроса можно назначить произвольное имя.
17. В ячейке Поле четвертого столбца введите Дата последнего контакта: Дата.
18. В первой строке пятого столбца бланка запроса введите Число контактов: Дата.
Примечание К сожалению, подобный прием не подходит для смены названия поля, значение которого не вычисляется, а передается из таблицы. То есть таким способом не удастся переименовать поле Имя.
19. Снова щелкните на кнопке Вид.
20. Закройте запрос.
21. Для сохранения изменений структуры щелкните на кнопке Да.
22. В окне диалога Сохранение введите имя Итоговый запрос и щелкните на кнопке ОК.
Итоговые запросы;
Для вычисления итоговых значений надо нажать кнопку Групповые операции(), чтобы в бланке QBE появилась строка Групповые операции. Access использует установку Группировка в строке Групповая операция для любого поля, занесенного в бланк запроса. Теперь записи по каждому полю группируются, но итог не подводится. Если выполнить запрос сейчас, вы получите набор записей, включающий по одной строке для каждого уникального значения поля запроса – но без итогов. Для получения итогов замените установку Группировка в строке Групповая операция на конкретные итоговые функции.
Access предоставляет девять функций, обеспечивающих выполнение групповых операций. Вы можете задать нужную вам функцию, введя ее имя с клавиатуры в строке Групповая операция бланка запроса или выбрав ее в раскрывающемся списке.
Итоговые функции Access:
Sum – вычисляет сумму всех значений заданного поля в каждой группе.
Avg –вычисляет среднее арифметическое всех значений данного поля в каждой группе.
Min – возвращает наименьшее значение, найденное в этом поле внутри каждой группы.
Max – возвращает наибольшее значение, найденное в этом поле внутри каждой группы.
Count– возвращает число записей, в которых значения данного поля отличны от Null.
StDev – стандартное отклонение всех значений данного поля в каждой группе.
Var –вычисляет дисперсию значений данного поля в каждой группе.
First –возвращает первое значение этого поля в группе.
В Access поддерживает особый тип итоговых запросов, называемый перекрестными запросами. Они позволяют увидеть вычисляемые значения в виде перекрестной таблицызвращает последнее значение этого поля в группе.
Форма.Объект, предназначенный в основном для ввода данных, отображения их на экране или управления работой приложения. Формы используются для того, чтобы реализовать требования пользователя к представлению данных из запросов или таблиц. Формы можно также распечатать. С помощью формы можно в ответ на некоторое событие, например изменение значения определенных данных, запустить макрос или процедуру VBA.
Рассмотрим основные виды форм, которые можно построить в Access.
Простые формы. В простой форме показывается только одна запись таблицы, причем все необходимые поля отображаются на одной странице.
Многостраничные формы. При необходимости вывести на экран записи, каждая из которых содержит большой объем информации, можно создать многостраничную форму.
Ленточные формы.Существует еще один тип форм, удобный для просмотра списка записей с небольшим числом полей данных. Это ленточная форма. В отличие от простой формы, которая показывает только одну запись, в ленточной форме отформатированные записи выводятся на экран одна за другой, как в таблице.
Подчиненные формы.Подчиненные формы используются для представления данных, находящихся на стороне «многие» отношения «один-ко-многим».
Всплывающие формы.Иногда удобнее предоставлять информацию в окне, которое все время остается на переднем плане. По умолчанию в Microsoft Windows 95 активное окно выводится на переднем плане, а остальные окна перемещаются на задний. Единственным исключением являются окна справки. В частности, окно процедурной справки остается на переднем плане, позволяя вам следить за пошаговыми инструкциями в то время, когда фокус находится в вашем рабочем окне (то есть оно активно). Такой тип плавающих окон называется всплывающим окном.
Монопольные формы.При разработке приложения возникают ситуации, когда требуется получить какие-либо данные или передать важную информацию прежде, чем Microsoft Access сможет продолжить работу. В Access имеется специальный тип формы – монопольная форма (окно которой является монопольным), которая требует ответа как непременного условия дальнейшей работы приложения.
Отчеты представляют собой наилучшее средство для представления информации из базы данных в виде печатного документа. По сравнению с другими средствами вывода данных на печать отчеты обладают двумя принципиальными преимуществами:
1.Предоставляют широкие возможности для группировки и вычисления промежуточных и общих итогов для больших наборов данных.
2.Могут быть использованы для получения красиво оформленных счетов, заказов на покупку, почтовых наклеек, материалов для презентаций и других документов, которые могут понадобиться для успешного ведения бизнеса.
В отчете каждая группа данных и итоги по ней могут быть представлены отдельно. В отчетах имеются следующие возможности:
· Для обеспечения иерархического представления данных можно определить до 10 условий группировки.
· Для каждой из групп можно задать отдельные заголовки и примечания.
· Можно производить сложные вычисления не только внутри некоторой группы или набора строк, но и по нескольким группам одновременно.
· В дополнении к верхнему и нижнему колонтитулу можно задать заголовок и примечание для всего отчета в целом.
Итоговые запросы
Дата добавления: 2015-07-09 ; просмотров: 5533 ; Нарушение авторских прав
В предыдущем разделе был рассмотрен запрос, содержащий вычисляемые поля, однако часто бывает необходимо найти суммы, среднее значение, максимальную или минимальную величину в каком-либо поле. Для нахождения этих величин надо создавать итоговый запрос. Итоговые запросы – это запросы выполняющие вычисления в группах записей.
Предположим нам надо подсчитать, на какую сумму продано товаров каждого наименования каждому покупателю. Для создания такого итогового запроса необходимы данные из таблиц «Покупатели», «Товары» и «Продажи». В бланке запроса в окне конструктора запросов в первый столбец надо ввести фамилию покупателя из таблицы «Покупатели», во второй столбец наименование товара из таблицы «Товары» и в третьем столбце создать вычисляемое поле «Стоимость». Далее необходимо выполнить команду «Групповые операции» и строке «Групповая операция:» бланка запроса установить для полей «Фамилия» и «Товар» операцию Группировка, а для поля «Стоимость» операцию Sum(рис.4.24).
В результирующей таблице данного запроса для каждого покупателя будет создаваться список товаров, которые данный покупатель покупал, и будет производиться подсчет стоимости покупок каждого товара данным покупателем (рис.4.25).
Как видно из рис.4.25. результат итогового запроса содержит 190 записей и неудобен для просмотра, т.е. для просмотра всех данных надо листать таблицу. Перекрестный запрос позволяет сделать вывод данных более удобным и информативным, т.е. так, чтобы на экране отображалось одновременно больше информации и в более удобной для восприятия форме.
Для ознакомления с перекрестным запросом создадим его на основе уже созданного запроса «Стоимость по покупателям», бланк которого представлен на рис.4.24. В результате выполнения перекрестного запроса в результирующей таблице должны отображаться те же данные, что и в запросе «Стоимость по покупателям», в другой форме. Для создания перекрестного запроса необходимо:
1. На закладке «Запросы» БД нажать на кнопку «Создать».
2. Выбрать инструмент «Перекрестный запрос» в окне диалога «Новый запрос».
4. На следующем шаге создания перекрестной таблицы надо выбрать поле, значения которого будут размещаться в первом столбце таблицы. Если полей несколько, то они будут размещаться в нескольких первых столбцах.
6. Дальше необходимо выбрать поля, для которых будет производиться итоговая операция и выбрать нужную операцию (рис.4.28).
7.
На последнем шаге надо задать имя запроса.
Результирующая таблица созданного запроса показана на рис.4.29. Как видно из рисунка в данной таблице фамилии покупателей располагаются в первом столбце, а наименования товаров в первой строчке. Результат итоговой операции располагается на пересечении строки и столбца. В таблице представлены также итоговые данные каждого покупателя по всем товарам (второй столбец). Данная таблица представляется более удобной для просмотра данных и более информативной (в ней отображается одновременно отображается больше информации чем в таблице на рис.4.25).
Все рассмотренные выше запросы были запросами для выбора данных из таблиц и выполнения вычислений над ними. Однако достаточно часто бывает необходимо менять данные в самих таблицах. СУБД Microsoft Access позволяет делать это с помощью запросов. Запросы, которые позволяют менять данные в таблицах БД называются модифицирующими запросами. Существует четыре вида модифицирующих запросов:
1. Запрос создания новой таблицы.
2. Запрос добавления.
3. Запрос удаления.
4. Запрос замены.
Запрос создания таблицы фактически не модифицирует таблицу, а создает новую таблицу. В данном пособии уже рассматривались механизмы для создания новых таблиц, поэтому такие запросы рассматриваться не будут.
Подсчет данных при помощи запроса
В этой статье описано, как подсчитать данные, возвращаемые запросом. Например, в форме или отчете можно подсчитать количество элементов в одном или нескольких полях таблицы или элементах управления. Вы также можете вычислять средние значения, находить наибольшее и наименьшее значения, самую давнюю и самую последнюю дату. Кроме того, в Access предусмотрено средство, называемое строкой итогов, с помощью которого можно подсчитывать данные в таблице, не изменяя структуру запроса.
Выберите нужное действие
Способы подсчета данных
Подсчитать количество элементов в поле (столбце значений) можно с помощью функции Число. Функция Число принадлежит к ряду функций, называемых агрегатными. Агрегатные функции выполняют вычисления со столбцами данных и возвращают единственное значение. Кроме функции Число, в Access есть следующие агрегатные функции:
Сумма для суммирования столбцов чисел;
Среднее для вычисления среднего значения в столбце чисел;
Максимум для нахождения наибольшего значения в поле;
Минимум для нахождения наименьшего значения в поле;
Стандартное отклонение для оценки разброса значений относительно среднего значения;
Дисперсия для вычисления статистической дисперсии всех значений в столбце.
В Access предусмотрено два способа добавления функции Count и других агрегатных функций в запрос. Вы можете:
Открыть запрос в режиме таблицы и добавить строку итогов. Строка итогов позволяет использовать агрегатные функции в одном или нескольких столбцах в результатах запроса без необходимости изменять его структуру.
Создать итоговый запрос. В итоговом запросе вычисляются промежуточные итоги по группам записей. Например, если вы хотите вычислить промежуточную сумму всех продаж по городам или по кварталам, следует использовать итоговый запрос для группировки записей по нужной категории, а затем просуммировать все объемы продаж. С другой стороны, с помощью строки итогов можно вычислить общий итог для одного или нескольких столбцов (полей) данных.
Примечание: Ниже в разделах этой статьи подробно описано применение функции Сумма, однако следует помнить, что вы можете использовать другие агрегатные функции в строках итогов и запросах. Дополнительные сведения об использовании других агрегатных функций см. ниже в разделе Справочные сведения об агрегатных функциях.
Дополнительные сведения о способах использования других агрегатных функций см. в разделе Отображение итогов по столбцу в таблице.
В следующих разделах описаны шаги, которые следует выполнить, чтобы добавить строку итогов, а также описывается использование итогового запроса для подсчета данных. Следует обратить внимание на то, что функция Число работает с большим числом типов данных, чем другие агрегатные функции. Функцию Число можно использовать для любого типа полей, кроме тех, которые содержат сложные повторяющиеся скалярные данные, например поле с многозначными списками.
С другой стороны, многие агрегатные функции работают только с данными в полях, имеющих определенный тип данных. Например, функция Сумма работает только с типами данных «Число», «Действительное» и «Денежный». Дополнительные сведения о типах данных, требуемых для каждой функции, см. ниже в разделе Справочные сведения об агрегатных функциях.
Общие сведения о типах данных см. в статье Изменение типа данных для поля.
Подсчет данных с помощью строки итогов
Чтобы добавить в запрос строку итогов, откройте его в режиме таблицы, добавьте строку, а затем выберите функцию Число или другую агрегатную функцию, например Сумма, Минимум, Максимум или Среднее. В этом разделе объясняется, как создать простой запрос на выборку и добавить строку итогов.
Создание простого запроса на выборку
На вкладке Создать в группе Другое нажмите кнопку Конструктор запросов.
В диалоговом окне Добавление таблицы дважды щелкните таблицу или таблицы, которые вы хотите использовать в запросе, а затем нажмите кнопку Закрыть.
Выбранные таблицы отображаются в виде окон в верхней части конструктора запросов. На рисунке показана типичная таблица в конструкторе запросов.
Дважды щелкните поля таблицы, которые вы хотите использовать в запросе.
Вы можете включить поля, содержащие описательные данные, например имена и описания, но следует обязательно добавить поле, содержащее подсчитываемые значения.
Каждое поле отображается в столбце в бланке запроса.
На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.
Результаты запроса отображаются в режиме таблицы.
При необходимости переключитесь в Конструктор и скорректируйте запрос. Для этого щелкните правой кнопкой мыши вкладку документа для запроса и выберите команду Конструктор. После этого можно изменить запрос, добавив или удалив поля таблицы. Чтобы удалить поле, выберите столбец в бланке запроса и нажмите клавишу DELETE.
При необходимости вы можете сохранить запрос.
Добавление строки итогов
Откройте запрос в режиме таблицы. Если база данных имеет формат ACCDB, щелкните правой кнопкой мыши вкладку документа для запроса и выберите команду Режим таблицы.
Если используется база данных в формате MDB, созданная в более ранней версии Access, на вкладке Главная в группе Режимы щелкните стрелку под кнопкой Режим и выберите значение Режим таблицы.
Дважды щелкните запрос в области навигации. Запрос будет выполнен, а его результаты будут загружены в таблицу.
На вкладке Главная в группе Записи нажмите кнопку Итоги.
Под последней строкой данных в таблице появится новая строка Итог.
В строке Итог щелкните поле, по которому вы хотите выполнить подсчет, и выберите в списке функцию Count.
Скрытие строки итогов
На вкладке Главная в группе Записи нажмите кнопку Итоги.
Дополнительные сведения об использовании строки итогов см. в разделе Отображение итогов по столбцу в таблице.
Подсчет данных с помощью итогового запроса
Когда нужно подсчитать некоторые или все записи, возвращаемые запросом, то вместо строки итогов можно воспользоваться итоговым запросом. Например, вы можете подсчитать общее число сделок или число сделок в отдельном городе.
Как правило, итоговый запрос применяется вместо строки итогов тогда, когда требуется использовать значение результата в другой части базы данных, например в отчете.
Подсчет всех записей в запросе
На вкладке Создать в группе Другое нажмите кнопку Конструктор запросов.
В диалоговом окне Добавление таблицы дважды щелкните таблицу, которую вы хотите использовать в запросе, а затем нажмите кнопку Закрыть.
Таблица появится в окне в верхней части конструктора запросов.
Дважды щелкните поля, которые вы хотите использовать в запросе, и убедитесь, что вы включите поле, которое хотите подсчитать. Вы можете подсчитать поля из большинства типов данных — исключением является поля, содержащие сложные, повторяющиеся скалярные данные, такие как поле многозначных списков.
На вкладке Конструктор в группе Показать или скрыть нажмите кнопку Итоги.
В бланке появится строка Итог, а в строке для каждого поля запроса будет указано Группировка.
В строке Итог щелкните поле, по которому вы хотите выполнить подсчет, и выберите в списке функцию Count.
На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.
Результаты запроса отображаются в режиме таблицы.
При необходимости вы можете сохранить запрос.
Подсчет записей в группе или категории
На вкладке Создать в группе Другое нажмите кнопку Конструктор запросов.
В диалоговом окне Добавление таблицы дважды щелкните таблицу или таблицы, которые вы хотите использовать в запросе, а затем нажмите кнопку Закрыть.
Таблица (или таблицы) появится в окне в верхней части конструктора запросов.
Дважды щелкните поле, содержащее данные категории, а также поле, значения в котором вы хотите подсчитать. Запрос не может содержать других описательных полей.
На вкладке Конструктор в группе Показать или скрыть нажмите кнопку Итоги.
В бланке появится строка Итог, а в строке для каждого поля запроса будет указано Группировка.
В строке Итог щелкните поле, по которому вы хотите выполнить подсчет, и выберите в списке функцию Count.
На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.
Результаты запроса отображаются в режиме таблицы.
При необходимости вы можете сохранить запрос.
Справочные сведения об агрегатных функциях
В следующей таблице перечислены и отписаны агрегатные функции Access, которые можно использовать в строке итогов и в запросах. Помните, что в Access предусмотрено больше агрегатных функций для запросов, чем для строки итогов. Кроме того, при работе с проектом Access (внешней базой данных Access, которая подключается к базе данных Microsoft SQL Server) можно использовать расширенный набор агрегатных функций, предоставляемый SQL Server. Дополнительные сведения о них см. в электронной документации Microsoft SQL Server.
Итоговые запросы;
Для вычисления итоговых значений надо нажать кнопку Групповые операции(), чтобы в бланке QBE появилась строка Групповые операции. Access использует установку Группировка в строке Групповая операция для любого поля, занесенного в бланк запроса. Теперь записи по каждому полю группируются, но итог не подводится. Если выполнить запрос сейчас, вы получите набор записей, включающий по одной строке для каждого уникального значения поля запроса – но без итогов. Для получения итогов замените установку Группировка в строке Групповая операция на конкретные итоговые функции.
Access предоставляет девять функций, обеспечивающих выполнение групповых операций. Вы можете задать нужную вам функцию, введя ее имя с клавиатуры в строке Групповая операция бланка запроса или выбрав ее в раскрывающемся списке.
Итоговые функции Access:
Sum – вычисляет сумму всех значений заданного поля в каждой группе.
Avg –вычисляет среднее арифметическое всех значений данного поля в каждой группе.
Min – возвращает наименьшее значение, найденное в этом поле внутри каждой группы.
Max – возвращает наибольшее значение, найденное в этом поле внутри каждой группы.
Count– возвращает число записей, в которых значения данного поля отличны от Null.
StDev – стандартное отклонение всех значений данного поля в каждой группе.
Var –вычисляет дисперсию значений данного поля в каждой группе.
First –возвращает первое значение этого поля в группе.
В Access поддерживает особый тип итоговых запросов, называемый перекрестными запросами. Они позволяют увидеть вычисляемые значения в виде перекрестной таблицызвращает последнее значение этого поля в группе.
Форма.Объект, предназначенный в основном для ввода данных, отображения их на экране или управления работой приложения. Формы используются для того, чтобы реализовать требования пользователя к представлению данных из запросов или таблиц. Формы можно также распечатать. С помощью формы можно в ответ на некоторое событие, например изменение значения определенных данных, запустить макрос или процедуру VBA.
Рассмотрим основные виды форм, которые можно построить в Access.
Простые формы. В простой форме показывается только одна запись таблицы, причем все необходимые поля отображаются на одной странице.
Многостраничные формы. При необходимости вывести на экран записи, каждая из которых содержит большой объем информации, можно создать многостраничную форму.
Ленточные формы.Существует еще один тип форм, удобный для просмотра списка записей с небольшим числом полей данных. Это ленточная форма. В отличие от простой формы, которая показывает только одну запись, в ленточной форме отформатированные записи выводятся на экран одна за другой, как в таблице.
Подчиненные формы.Подчиненные формы используются для представления данных, находящихся на стороне «многие» отношения «один-ко-многим».
Всплывающие формы.Иногда удобнее предоставлять информацию в окне, которое все время остается на переднем плане. По умолчанию в Microsoft Windows 95 активное окно выводится на переднем плане, а остальные окна перемещаются на задний. Единственным исключением являются окна справки. В частности, окно процедурной справки остается на переднем плане, позволяя вам следить за пошаговыми инструкциями в то время, когда фокус находится в вашем рабочем окне (то есть оно активно). Такой тип плавающих окон называется всплывающим окном.
Монопольные формы.При разработке приложения возникают ситуации, когда требуется получить какие-либо данные или передать важную информацию прежде, чем Microsoft Access сможет продолжить работу. В Access имеется специальный тип формы – монопольная форма (окно которой является монопольным), которая требует ответа как непременного условия дальнейшей работы приложения.
Отчеты представляют собой наилучшее средство для представления информации из базы данных в виде печатного документа. По сравнению с другими средствами вывода данных на печать отчеты обладают двумя принципиальными преимуществами:
1.Предоставляют широкие возможности для группировки и вычисления промежуточных и общих итогов для больших наборов данных.
2.Могут быть использованы для получения красиво оформленных счетов, заказов на покупку, почтовых наклеек, материалов для презентаций и других документов, которые могут понадобиться для успешного ведения бизнеса.
В отчете каждая группа данных и итоги по ней могут быть представлены отдельно. В отчетах имеются следующие возможности:
· Для обеспечения иерархического представления данных можно определить до 10 условий группировки.
· Для каждой из групп можно задать отдельные заголовки и примечания.
· Можно производить сложные вычисления не только внутри некоторой группы или набора строк, но и по нескольким группам одновременно.
· В дополнении к верхнему и нижнему колонтитулу можно задать заголовок и примечание для всего отчета в целом.