Сумма строк в access
Уверен, кому-то приведенная здесь задача покажется простой, ну а для тех, кто как я пользуется MS Access от случая к случаю, может и пригодиться.
Имеется два столбца. Данные могут повторяться как в первом, так и во втором столбце, также могут повторяться пары значений первого и второго столбца. Требуется выяснить может ли в рамках одного значения первого столбца быть несколько разных значений из второго столбца .
В первом столбце буквы (letter), во втором — цифры (number). Теперь разберемся есть ли случаи, когда одной и той же букве соответствует два и больше разных значений цифр.

Затем необходимо перейти в режим SQL-запросов и после SELECT указать оператор DISTINCT должно получиться вот так:

Далее приступаем к формированию запроса для подсчета числа строк с одинаковым значением в первом столбце, а так как на предыдущем шаге мы удалили дубли, то суммарное действие первого и второго запросов даст ответ на поставленную задачу — может ли в рамках одного значения первого столбца быть несколько разных значений из второго столбца. Для этого в конструкторе запросов берем первый запрос и выбираем оба столбца для вывода:

В контекстном меню выбираем Итоги :

Делаем группировку по первому столбцу, подсчет ( Count ) по второму и для второго же столбца в качестве условия отбора ставим «больше единицы»:

Запускаем запрос и получаем решение задачи:
Т.е. в нашем примере для BBB и CCC есть два различных значения во втором столбце. Если бы у нас была потребность определить разные значения какого-либо параметра не в рамках значений какого-то одного столбца, а в рамках группы значений разных столбцов, то, соответственно, группировку следовало бы указать для всех этих столбцов, а Count, как и в данном примере, только для подсчитываемого параметра.
В общем-то на этом все. Можно еще вывести информацию о том, какие именно разные значения второго столбца соответствуют BBB и CCC . Объединяем последний запрос с исходной таблицей:
Подсчет данных при помощи запроса
В этой статье описано, как подсчитать данные, возвращаемые запросом. Например, в форме или отчете можно подсчитать количество элементов в одном или нескольких полях таблицы или элементах управления. Вы также можете вычислять средние значения, находить наибольшее и наименьшее значения, самую давнюю и самую последнюю дату. Кроме того, в Access предусмотрено средство, называемое строкой итогов, с помощью которого можно подсчитывать данные в таблице, не изменяя структуру запроса.
Выберите нужное действие
Способы подсчета данных
Подсчитать количество элементов в поле (столбце значений) можно с помощью функции Число. Функция Число принадлежит к ряду функций, называемых агрегатными. Агрегатные функции выполняют вычисления со столбцами данных и возвращают единственное значение. Кроме функции Число, в Access есть следующие агрегатные функции:
Сумма для суммирования столбцов чисел;
Среднее для вычисления среднего значения в столбце чисел;
Максимум для нахождения наибольшего значения в поле;
Минимум для нахождения наименьшего значения в поле;
Стандартное отклонение для оценки разброса значений относительно среднего значения;
Дисперсия для вычисления статистической дисперсии всех значений в столбце.
В Access предусмотрено два способа добавления функции Count и других агрегатных функций в запрос. Вы можете:
Открыть запрос в режиме таблицы и добавить строку итогов. Строка итогов позволяет использовать агрегатные функции в одном или нескольких столбцах в результатах запроса без необходимости изменять его структуру.
Создать итоговый запрос. В итоговом запросе вычисляются промежуточные итоги по группам записей. Например, если вы хотите вычислить промежуточную сумму всех продаж по городам или по кварталам, следует использовать итоговый запрос для группировки записей по нужной категории, а затем просуммировать все объемы продаж. С другой стороны, с помощью строки итогов можно вычислить общий итог для одного или нескольких столбцов (полей) данных.
Примечание: Ниже в разделах этой статьи подробно описано применение функции Сумма, однако следует помнить, что вы можете использовать другие агрегатные функции в строках итогов и запросах. Дополнительные сведения об использовании других агрегатных функций см. ниже в разделе Справочные сведения об агрегатных функциях.
Дополнительные сведения о способах использования других агрегатных функций см. в разделе Отображение итогов по столбцу в таблице.
В следующих разделах описаны шаги, которые следует выполнить, чтобы добавить строку итогов, а также описывается использование итогового запроса для подсчета данных. Следует обратить внимание на то, что функция Число работает с большим числом типов данных, чем другие агрегатные функции. Функцию Число можно использовать для любого типа полей, кроме тех, которые содержат сложные повторяющиеся скалярные данные, например поле с многозначными списками.
С другой стороны, многие агрегатные функции работают только с данными в полях, имеющих определенный тип данных. Например, функция Сумма работает только с типами данных «Число», «Действительное» и «Денежный». Дополнительные сведения о типах данных, требуемых для каждой функции, см. ниже в разделе Справочные сведения об агрегатных функциях.
Общие сведения о типах данных см. в статье Изменение типа данных для поля.
Подсчет данных с помощью строки итогов
Чтобы добавить в запрос строку итогов, откройте его в режиме таблицы, добавьте строку, а затем выберите функцию Число или другую агрегатную функцию, например Сумма, Минимум, Максимум или Среднее. В этом разделе объясняется, как создать простой запрос на выборку и добавить строку итогов.
Создание простого запроса на выборку
На вкладке Создать в группе Другое нажмите кнопку Конструктор запросов.
В диалоговом окне Добавление таблицы дважды щелкните таблицу или таблицы, которые вы хотите использовать в запросе, а затем нажмите кнопку Закрыть.
Выбранные таблицы отображаются в виде окон в верхней части конструктора запросов. На рисунке показана типичная таблица в конструкторе запросов.
Дважды щелкните поля таблицы, которые вы хотите использовать в запросе.
Вы можете включить поля, содержащие описательные данные, например имена и описания, но следует обязательно добавить поле, содержащее подсчитываемые значения.
Каждое поле отображается в столбце в бланке запроса.
На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.
Результаты запроса отображаются в режиме таблицы.
При необходимости переключитесь в Конструктор и скорректируйте запрос. Для этого щелкните правой кнопкой мыши вкладку документа для запроса и выберите команду Конструктор. После этого можно изменить запрос, добавив или удалив поля таблицы. Чтобы удалить поле, выберите столбец в бланке запроса и нажмите клавишу DELETE.
При необходимости вы можете сохранить запрос.
Добавление строки итогов
Откройте запрос в режиме таблицы. Если база данных имеет формат ACCDB, щелкните правой кнопкой мыши вкладку документа для запроса и выберите команду Режим таблицы.
Если используется база данных в формате MDB, созданная в более ранней версии Access, на вкладке Главная в группе Режимы щелкните стрелку под кнопкой Режим и выберите значение Режим таблицы.
Дважды щелкните запрос в области навигации. Запрос будет выполнен, а его результаты будут загружены в таблицу.
На вкладке Главная в группе Записи нажмите кнопку Итоги.
Под последней строкой данных в таблице появится новая строка Итог.
В строке Итог щелкните поле, по которому вы хотите выполнить подсчет, и выберите в списке функцию Count.
Скрытие строки итогов
На вкладке Главная в группе Записи нажмите кнопку Итоги.
Дополнительные сведения об использовании строки итогов см. в разделе Отображение итогов по столбцу в таблице.
Подсчет данных с помощью итогового запроса
Когда нужно подсчитать некоторые или все записи, возвращаемые запросом, то вместо строки итогов можно воспользоваться итоговым запросом. Например, вы можете подсчитать общее число сделок или число сделок в отдельном городе.
Как правило, итоговый запрос применяется вместо строки итогов тогда, когда требуется использовать значение результата в другой части базы данных, например в отчете.
Подсчет всех записей в запросе
На вкладке Создать в группе Другое нажмите кнопку Конструктор запросов.
В диалоговом окне Добавление таблицы дважды щелкните таблицу, которую вы хотите использовать в запросе, а затем нажмите кнопку Закрыть.
Таблица появится в окне в верхней части конструктора запросов.
Дважды щелкните поля, которые вы хотите использовать в запросе, и убедитесь, что вы включите поле, которое хотите подсчитать. Вы можете подсчитать поля из большинства типов данных — исключением является поля, содержащие сложные, повторяющиеся скалярные данные, такие как поле многозначных списков.
На вкладке Конструктор в группе Показать или скрыть нажмите кнопку Итоги.
В бланке появится строка Итог, а в строке для каждого поля запроса будет указано Группировка.
В строке Итог щелкните поле, по которому вы хотите выполнить подсчет, и выберите в списке функцию Count.
На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.
Результаты запроса отображаются в режиме таблицы.
При необходимости вы можете сохранить запрос.
Подсчет записей в группе или категории
На вкладке Создать в группе Другое нажмите кнопку Конструктор запросов.
В диалоговом окне Добавление таблицы дважды щелкните таблицу или таблицы, которые вы хотите использовать в запросе, а затем нажмите кнопку Закрыть.
Таблица (или таблицы) появится в окне в верхней части конструктора запросов.
Дважды щелкните поле, содержащее данные категории, а также поле, значения в котором вы хотите подсчитать. Запрос не может содержать других описательных полей.
На вкладке Конструктор в группе Показать или скрыть нажмите кнопку Итоги.
В бланке появится строка Итог, а в строке для каждого поля запроса будет указано Группировка.
В строке Итог щелкните поле, по которому вы хотите выполнить подсчет, и выберите в списке функцию Count.
На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.
Результаты запроса отображаются в режиме таблицы.
При необходимости вы можете сохранить запрос.
Справочные сведения об агрегатных функциях
В следующей таблице перечислены и отписаны агрегатные функции Access, которые можно использовать в строке итогов и в запросах. Помните, что в Access предусмотрено больше агрегатных функций для запросов, чем для строки итогов. Кроме того, при работе с проектом Access (внешней базой данных Access, которая подключается к базе данных Microsoft SQL Server) можно использовать расширенный набор агрегатных функций, предоставляемый SQL Server. Дополнительные сведения о них см. в электронной документации Microsoft SQL Server.
Практическая работа. Создание перекрестных запросов в MS Access
Как организовать дистанционное обучение во время карантина?
Помогает проект «Инфоурок»
Практическая работа №5
Тема: «Создание перекрестных запросов»
для студентов 2 курса специальности 10.02.03
Информационная безопасность автоматизированных систем
Цели работы: научиться создавать перекрестные запросы на выборку данных с помощью мастера и конструктора запросов.
Перекрестные запросы — это запросы, в которых происходит статистическая обработка данных, результаты которой выводятся в виде таблицы, очень похожей на сводную таблицу Excel. Перекрестные запросы обладают следующими достоинствами:
возможностью обработки значительного объема данных и вывода их в формате, который очень хорошо подходит для автоматического создания графиков и диаграмм;
простотой и скоростью разработки сложных запросов с несколькими уровнями детализации.
Однако они имеют и недостатки — например, нельзя сортировать таблицу результатов по значениям, содержащимся в столбцах, т. к. в подавляющем большинстве случаев одновременное упорядочивание данных в столбцах по всем строкам невозможно. При этом вы можете задать сортировку по возрастанию или по убыванию для заголовков строк.


Создать запрос с помощью мастера форм: Создание/Мастер запросов
Создать с помощью конструктора: Создание/ Конструктор запросов
Изменить запрос с помощью конструктора: Режим/Конструктор
Задание 1. Создать запрос Выручка по месяцам
Создать с помощью мастера запросов перекрестный запрос, результатом которого будет таблица, демонтирующая выручку организации по месяцам по каждому сотруднику.

1. Создать запрос с помощью мастера запросов: Создание/Другие/Мастер запросов/Перекрестный запрос

2. Для создания перекрестного запроса использовать данные таблицы Заказы

3. Выбрать поля, значения которых использовать в качестве заголовков строк — Сотрудник.

4. Выбрать поля, значения которых использовать в качестве заголовков столбцов – Дата заказа .
5. Выбрать интервал, с которым необходимо сгруппировать столбец данных типа даты и времени — Месяц

6. Выбрать, какие исчисления необходимо провести для каждой ячейки на пересечении строк и столбцов. Выбрать поле Сумма и применить функцию C УММА.

7. Задать имя перекрестного запроса Выручка по месяцам .


Задание 2. Создать перекрестный запрос «Количество заказов по сотрудникам»
Создать с помощью конструктора перекрестный запрос, результатом которого будет таблица, демонтирующая количество заказов по сотрудникам и клиентам.

1. Создать запрос с помощью конструктора: Создание/Другие/Конструктор запросов
2. Для создания запроса использоватьтаблицы и поля:
таблица Заказы (поля ФИО клиента и Сумма )
таблица Сотрудники (поле ФИО сотрудника ).
3. Чтобы подключить групповые функции , нажать на кнопку 
4. Для поля Сумма выбирать из выпадающего списка функцию Count – считать количество записей.

5. Чтобы создать перекрестный запрос, нажать на кнопку
.
6. Провести настройку перекрестной таблицы. Использовать:
Поле ФИО сотрудника для заголовков столбцов ,
Поле ФИО клиента для заголовков строк ,
Поле Сумма в качестве значений , которые будут отображаться на пересечении столбцов и строк.

5. Для создания запроса нажимаем кнопку Выполнить!

6. Сохраните запрос под именем Количество заказов по сотрудникам .
Итоговый запрос из базы данных 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. В окне диалога Сохранение введите имя Итоговый запрос и щелкните на кнопке ОК.
Суммирование по множеству условий функцией БДСУММ (DSUM)
Для выборочного подсчета по нескольким условиям в больших таблицах можно использовать несколько способов: фильтры, сводные таблицы, функции СУММЕСЛИ и СУММЕСЛИМН и т.д.
Еще одним, относительно экзотическим, но весма мощным инструментом является функция БДСУММ (DSUM) из категории Работа с базой данных (Database) . При внешней простоте, она позволяет гибко фильтровать списки по нескольким сложным и связанным между собой условиям и подсчитывает сумму найденных записей по заданному столбцу. Синтаксис функции таков:
=БДСУММ( Исходные_данные ; Столбец_результата ; Диапазон_условий )
- Исходные_данные — диапазон, включающий в себя таблицу с данными, которые мы анализируем и строкой заголовка.
- Столбец_результата — название (из шапки таблицы) или порядковый номер столбца, по которому нужно просуммировать данные.
- Диапазон_условий — диапазон, содержащий названия столбцов и условия по ним.
Давайте рассмотрим детали и нюансы применения этой замечательной функции на практике. Допустим, что у нас есть вот такая таблица с данными по продажам:

Чтобы удобнее было ссылаться эту таблицу в будущем, конвертируем ее в «умную» командой Форматировать как таблицу на вкладке Главная (Home — Format as Table) или сочетанием клавиш Ctrl + T . На появившейся затем вкладке Конструктор (Design) зададим ей имя — например БазаДанных.
Простая сумма по одному условию
Начнем с простого случая. Допустим, нам нужно просуммировать стоимость по всем сделкам сока Добрый. Это будет выглядеть следующим образом:

Обратите внимание на следующие моменты:
- Не достаточно просто написать имя умной таблицы БазаДанных в первом аргументе, т.к. в этом случае ссылка не включает шапку, а для функции БДСУММ она необходима. Поэтому к имени добавляется тег [#Все] или, в английском варианте [#All].
- Столбец, по которому нужно просуммировать данные можно задать либо названием («Стоимость»), либо номером (было бы 5).
- Название столбца в желтом диапазоне условий должно один-в-один совпадать с названием в исходной таблице.
- Функция БДСУММ не различает регистр символов (добрый = ДОБРЫЙ = Добрый = ДоБрЫй и т.д.)
- Чтобы критерий в желтой ячейке А2 Excel не начал понимать как формулу (т.к. формулы обычно начинаются со знака равно) можно использовать текстовый формат или просто начать ввод в ячейку с апострофа:
Приблизительный и точный текстовый поиск
При необходимости, можно легко реализовать не только точный, но и приблизительный текстовый поиск. Посмотрите внимательно на следующие варианты суммирования выручки по городу Абакан и разницу между ними:

- Если нужен поиск точного соответствия, то используем конструкцию ‘= (апостроф и знак равно).
- Если нужен поиск подстроки, т.е. всех ячеек, которые содержат нужное значение, то его надо заключить в звездочки. В нашем случае будут просуммированы все варианты Абакана (с «г.», без «г.», с пробелами перед-после и т.п.)
- Если просто ввести значение без равно и звездочек, то будут найдены и просуммированны все строки, где содержимое начинается с указанного значения, т.е. это равноценно звездочке в конце.
Несколько условий со связками «И» — «ИЛИ»
Если нужно просуммировать данные по нескольким условиям, связанным друг с другом логическим оператором И (AND), то ячейки с этими условиями должны быть в одной строке. Например, если нужно просуммировать все продажи Fanta по Абакану (в любом виде его написания), то это будет выглядеть так:

Если же нужно связать несколько условий логическим оператором ИЛИ (OR), то их нужно расположить в разных строчках. Например, если нужно просуммировать деньги по всем вариантам написания «города на Неве», коих великое множество:

И конечно же, можно комбинировать оба подхода, сочетания в одном запросе условия со связками И и ИЛИ одновременно:

В этом случае вычисляется сумма продаж Fanta в Абакане и Burn у Дубинина.
Суммирование по интервалу дат
В диапазоне условий можно легко задать интервал дат для подсчета. Если интервал ограничен с двух сторон, то нужно будет задать два условия, связанных между собой логическим «И» — поэтому придется писать условия в одной строке, т.е. добавить еще один столбец с тем же названием Дата сделки:

В данном случае вычисляется сумма продаж Fanta за 2016 год и Фруктайм до 2016 года.
Условия для чисел
Для отбора по числовым критериям можно смело использовать обычные знаки неравенств >, =, » обозначающие «не равно» в синтаксисе Excel. Допустим, нам нужно просуммировать все данные по Fanta кроме Самары и по Квасу кроме Пензы — это будет выглядеть так:

Обратите внимание, что если нужно просуммировать Fant’у И Квас по всем городам, кроме Самары И Пензы, то конструкция таблицы условий будет уже немного другая — для каждого товара нужно исключить каждый город:

Заключение
Надеюсь, вы уже поняли, что функция БДСУММ является очень неплохим инструментом и, зачастую, более удобной альтернативой классическим функциям выборочного подсчета типа СУММЕСЛИ (SUMIF) и СУММЕСЛИМН (SUMIFS) . Кроме того, в той же категории Работа с базой данных (Database) можно найти ее «подруг», вычисляющих не только сумму:
- БСЧЁТ (DCOUNTA) — количество непустых ячеек (в нашем случае — строк заказов)
- ДМИН (DMIN) — минимальное (например, худшая сделка)
- ДМАКС (DMAX) — максимальное (лучшая сделка)
- ДСРЗНАЧ (DAVERAGE) — среднее арифметическое (например, средний чек)
У них тот же синтаксис, и все, что было разобрано выше, абсолютно аналогично работает и с этими функциями. Так что этой статьей мы убили с вами не одного зайца, а целых пять
Как суммировать поля в таблице access: Подсчет данных при помощи запроса
Примечание: Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы. Для удобства также приводим ссылку на оригинал (на английском языке).
В данной статье описано использование агрегатной функции для суммирования данных в результатах запроса. В ней также кратко описывается использование других агрегатных функций, например COUNT и AVG, для подсчета или вычисления средних значений в результирующем наборе записей. Кроме того, в этой статье рассматривается использование строки итогов — возможности Access, позволяющий суммировать данные без изменения структуры запросов.
Выберите нужное действие
Общее представление о способах суммирования данных
Подготовка примера данных
Суммирования данных с помощью строки итогов
Вычисление общих итогов с помощью запроса
Вычисление итогов по группе с помощью итогового запроса
Суммирование данных из нескольких групп с помощью перекрестного запроса
Справочные сведения об агрегатных функциях
Общее представление о способах суммирования данных
Просуммировать числовой столбец в запросе можно с помощью агрегатной функции.
Агрегатные функции выполняют вычисления со столбцами данных и возвращают единственное значение. В Access существует множество агрегатных функций, включая Sum, Count, Avg (для вычисления среднего значения), Min и Max. Суммирование данных производится путем добавления в запрос функции Sum, подсчет данных — путем использования функции Count и т. д.
Кроме того, в Access предусмотрено несколько способов добавления функции Sum и других агрегатных функций в запрос. Вы можете:
Открыть запрос в режиме таблицы и добавить строку итогов. Строка итогов — возможность Access, позволяющая использовать агрегатные функции в одном или нескольких столбцах в результатах запроса без необходимости изменять его структуру. 
Создать итоговый запрос. Итоговый запрос вычисляет промежуточные итоги для групп записей, а строка итогов — общие итоги для одного или нескольких столбцов (полей) данных. Например, если вы хотите вычислить промежуточную сумму всех продаж по городам или по кварталам, следует использовать итоговый запрос для группировки записей по нужной категории, а затем просуммировать все объемы продаж.
Создать перекрестный запрос. Перекрестный запрос — это особый тип запросов, отображающий результаты в сетке, напоминающей лист Excel. Перекрестные запросы суммируют значения и затем группируют их по двум наборам фактов — вдоль боковой стороны (заголовки строк) и в верхней части (заголовки столбцов). Например, вы можете использовать перекрестный запрос для отображения итоговых значений продаж для каждого города за последние три года, как показано в таблице:
.
..
Примечание: Ниже в разделах этой статьи подробно описано применение функции Sum, однако следует помнить, что вы можете использовать другие агрегатные функции в строках итогов и запросах. Дополнительные сведения об использовании других агрегатных функций см. ниже в разделе Справочные сведения об агрегатных функциях.
Дополнительные сведения о способах использования других агрегатных функций см. в разделе Отображение итогов по столбцу в таблице.
В следующих разделах описано, как добавить строку итогов, использовать итоговый запрос для суммирования данных и перекрестный запрос, вычисляющий промежуточные итоги по группам и интервалам времени.
Помните, что многие агрегатные функции работают только с данными в полях, имеющих определенный тип данных. Например, функция SUM работает только с типами данных «Число», «Действительное» и «Денежный». Дополнительные сведения о типах данных, требуемых для каждой функции, см. ниже в разделе Справочные сведения об агрегатных функциях.
Общие сведения о типах данных см. в статье Изменение типа данных для поля.
К началу страницы
Подготовка примера данных
В инструкциях этой статьи приводятся таблицы с примерами данных.
Они помогают понять, как работают агрегатные функции. Вы можете добавить примеры таблиц в новую или существующую базу данных.
Сделать это в Access можно несколькими способами. Вы можете ввести данные вручную, скопировать каждую таблицу в редактор электронных таблиц (такой как Excel) и импортировать листы в Access или же вставить данные в текстовый редактор, например Блокнот, и импортировать их из созданных текстовых файлов.
В пошаговых инструкциях этого раздела объясняется, как вводить данные вручную на пустой лист, а также как копировать примеры таблиц в редактор электронных таблиц и затем импортировать их в Access. Дополнительные сведения о создании и импорте текстовых данных см. в статье Импорт данных или связывание с данными текстового файла. 
Игры и головоломки
DVD-диски и фильмы
Модели для сборки, хобби
Наименование товара
Эксперименты с C# (игра для всей семьи)
Игры и головоломки
Схема реляционной базы данных
Волшебная микросхема (500 деталей)
Игры и головоломки
Игры и головоломки
Компьютерные маньяки и мифические животные
Приступить к вашему компьютеру! С DVD-диска!
DVD-диски и фильмы
Неуловимая летающая пицца
Внешний дисковод гибких дисков 5. />25» (масштаб 1:4)
Модели для сборки, хобби
Недвижущаяся фигурка бюрократа
Модели для сборки, хобби
Таблица Заказы
Город назначения
Стоимость доставки
14.
11.2005
18.11.
2005
19.
11.2005
22.11.
2005
Таблица Сведения о заказах
Идентификатор заказа
Наименование товара
Цена за единицу
Недвижущаяся фигурка бюрократа
Приступить к вашему компьютеру! С DVD-диска!
Компьютерные маньяки и мифические животные
Неуловимая летающая пицца
Внешний дисковод гибких дисков 5.
25» (масштаб 1:4)
Схема реляционной базы данных
Схема реляционной базы данных
Примечание: Помните, что в типичной базе данных таблица «Сведения о заказах» будет содержать только поле «Код товара» (без поля «Наименование товара»).
В данном примере поле «Наименование товара» используется для упрощения восприятия данных.
Ввод примеров данных вручную
на вкладке Создание в группе Таблицы нажмите кнопку Таблица.
Access добавит в базу данных новую пустую таблицу.
Примечание: Эту операцию следует выполнять только при необходимости добавить таблицу в базу данных. При открытии новой пустой базы данных это действие не требуется.
Дважды щелкните первую ячейку в строке заголовков и введите имя поля из примера таблицы.
По умолчанию в Access пустые поля обозначаются надписью Добавить поле в строке заголовков:
С помощью клавиш со стрелками перейдите в следующую пустую ячейку заголовка и введите имя второго поля (чтобы перейти в другую ячейку, можно также нажать клавишу TAB или щелкнуть эту ячейку два раза).
Повторите эти действия, чтобы ввести имена всех полей.
Введите данные в пример таблицы.
По мере ввода данных Access определяет их тип для каждого поля. Если вы плохо знакомы с реляционными базами данных, для каждого поля таблицы следует задать конкретный тип данных, например «Число», «Текст» или «Дата/время». Это обеспечивает точный ввод данных и помогает предотвратить ошибки, например использование цифр номера телефона в вычислениях. Для этих примеров таблиц можно определить тип данных автоматически.
Завершив ввод данных, нажмите кнопку Сохранить.
(Сочетание клавиш: нажмите CTRL+S.)
Откроется диалоговое окно Сохранение документа.
В поле Имя таблицы введите имя примера таблицы и нажмите кнопку ОК.
Следует использовать указанные имена таблиц, потому что они применяются в запросах, приведенных в пошаговых инструкциях.
Повторяйте эти шаги, пока не создадите каждый из примеров таблиц, приведенных в начале этого раздела.
Если вы не хотите вводить данные вручную, можно выполнить указанные ниже действия для копирования информации в файл электронной таблицы, а затем импортировать данные из него в Access.
Создание листов с примерами данных
Запустите редактор электронных таблиц и создайте пустой файл. Если вы используете Excel, по умолчанию создается пустая книга.
Скопируйте первый пример таблицы и вставьте его на первый лист, начиная с первой ячейки. 
Присвойте листу имя с помощью функций редактора электронных таблиц. Оно должно совпадать с именем примера таблицы. Например, если пример называется Категории, присвойте листу это же имя.
Повторяйте шаги 2 и 3, чтобы скопировать каждый пример таблицы на пустой лист и переименовать этот лист.
Примечание: К файлу электронной таблицы может понадобиться добавить листы. Сведения о том, как сделать это, см. в справке редактора электронных таблиц.
Сохраните книгу в нужной папке на компьютере или в сети и переходите к следующей процедуре.
Создание таблиц базы данных на основе листов
На вкладке Внешние данные в группе Импорт щелкните Excel. 
Нажмите кнопку Дополнительно, а затем выберите редактор электронных таблиц из списка.
Откроется диалоговое окно Внешние данные — лист <имя программы>.
Нажмите кнопку Обзор, откройте файл электронной таблицы, созданный на предыдущих этапах, и нажмите кнопку ОК.
Откроется окно мастера импорта электронных таблиц.
По умолчанию мастер выбирает первый лист в книге (в этом примере — лист Клиенты), и данные из этого листа появляются в нижней части страницы мастера. Нажмите кнопку Далее.
На следующей странице мастера выберите Первая строка содержит названия столбцов, а затем нажмите кнопку Далее.
Если нужно, вы можете изменить имена полей и типы данных или пропустить некоторые поля, воспользовавшись текстовыми полями и списками в группе Параметры поля.
В противном случае нажмите кнопку Далее.
Оставьте параметр автоматически создать ключ выбранным и нажмите кнопку Далее.
По умолчанию Access использует имя листа для новой таблицы. Оставьте это имя или введите другое, а затем нажмите кнопку Готово.
Повторите шаги с 1 по 7 для каждого листа книги Excel, чтобы создать для него таблицу.
Переименование полей первичного ключа
Примечание: При импорте листов Access автоматически добавляет в каждую таблицу столбец первичного ключа и по умолчанию присваивает ему имя «Код» и тип данных «Счетчик». В этом разделе даны инструкции по переименованию полей первичного ключа. Это позволяет четко определить все поля в запросе.
В области навигации щелкните правой кнопкой мыши каждую таблицу, созданную на предыдущем шаге, и выберите команду Конструктор. 
Для каждой таблицы найдите поле первичного ключа. По умолчанию Access присваивает каждому полю имя Код.
В столбце Имя поля каждого поля первичного ключа добавьте имя таблицы.
Например, вы должны переименовать поле ID таблицы Categories на «код категории», а поле для таблицы Orders — на «код заказа». В таблице «сведения о заказе» переименуйте поле на «Detail ID». В таблице Products (продукты) переименуйте поле на «код продукта».
В последующих ссылках на примеры таблиц в данной статье указываются поля первичного ключа, переименованные, как описано выше.
К началу страницы
Суммирования данных с помощью строки итогов
Чтобы добавить в запрос строку итогов, откройте его в режиме таблицы, добавьте строку, а затем выберите нужную агрегатную функцию, например Sum, Min, Max или Avg. В этом разделе объясняется, как создать простой запрос на выборку и добавить строку итогов. Не обязательно использовать примеры таблиц, представленные в предыдущем разделе.
Создание простого запроса на выборку
На вкладке Создать в группе Другое нажмите кнопку Конструктор запросов.
В диалоговом окне Отображение таблиц дважды щелкните таблицу или таблицы, которые вы хотите использовать в запросе, а затем нажмите кнопку Закрыть.
Выбранные таблицы отображаются в виде окон в верхней части конструктора запросов.
Дважды щелкните поля таблицы, которые вы хотите использовать в запросе.
Можно включить поля, содержащие описательные данные, например имена и описания, но следует обязательно добавить поле, содержащее числовые или денежные значения. 
Каждое поле отображается в ячейке в бланке запроса.
Нажмите кнопку Выполнить для выполнения запроса.
Результаты запроса будут отображены в режиме таблицы.
При необходимости переключитесь в Конструктор и скорректируйте запрос. Для этого щелкните правой кнопкой мыши вкладку документа для запроса и выберите команду Конструктор. После этого можно изменить запрос, добавив или удалив поля таблицы. Чтобы удалить поле, выберите столбец в бланке запроса и нажмите клавишу DELETE.
Добавление строки итогов
Убедитесь в том, что запрос открыт в режиме таблицы.
Для этого щелкните правой кнопкой мыши вкладку документа для запроса и выберите команду Режим таблицы.
Дважды щелкните запрос в области навигации. Запрос будет выполнен, а его результаты будут загружены в таблицу.
На вкладке Главная в группе Записи нажмите кнопку Итоги.
В таблице появится новая строка Итог.
В строке Итог щелкните ячейку в поле, по которому вы хотите вычислить сумму, и выберите в списке функцию Sum.
Скрытие строки итогов
Дополнительные сведения об использовании строки итогов см. в разделе Отображение итогов по столбцу в таблице.
К началу страницы
Вычисление общих итогов с помощью запроса
Общие итоги — это сумма по всем значениям столбца.
Можно вычислять нескольких типов общих итогов, включая:
Простой общий итог, суммирующий значения одного столбца. Например, можно вычислить общую стоимость доставки.
Вычисляемый общий итог, суммирующий значения нескольких столбцов. Например, можно вычислить суммы продаж путем умножения цены нескольких товаров на число заказанных товаров, а затем просуммировав результирующие значения.
Общий итог за исключением нескольких записей. Например, можно вычислить сумму продаж только по последней пятнице.
В следующих разделах описано, как вычислить каждый из типов общих итогов.
В инструкциях используются таблицы «Заказы» и «Сведения о заказах».
Идентификатор заказа
Город назначения
Стоимость доставки
15.11.
2005
17.
11.2005
18. 11.2005
20.
11.2005
Таблица «Сведения о заказах»
Идентификатор заказа
Наименование товара
Цена за единицу
Недвижущаяся фигурка бюрократа
Приступить к вашему компьютеру! С DVD-диска!
Компьютерные маньяки и мифические животные
Неуловимая летающая пицца
Внешний дисковод гибких дисков 5.
25» (масштаб 1:4)
Схема реляционной базы данных
Схема реляционной базы данных
Вычисление простого общего итога
На вкладке Создать в группе Другое нажмите кнопку Конструктор запросов. 
В диалоговом окне Добавление таблицы дважды щелкните таблицу, которую вы хотите использовать в запросе, а затем нажмите кнопку Закрыть.
При использовании примера данных нужно дважды щелкнуть таблицу «Заказы».
Таблица появится в окне в верхней части конструктора запросов.
Дважды щелкните поле, для которого вы хотите найти сумму. Убедитесь, что поле имеет тип данных «Число» или «Денежный». При попытке суммировать значения в нечисловых полях, например в текстовом поле, Access выводит сообщение об ошибке Несоответствие типов данных в выражении условия отбора.
Если вы используете пример данных, дважды щелкните столбец «Стоимость доставки».
Вы можете добавить дополнительные числовые поля, если хотите вычислить для них общие итоги. Итоговый запрос может вычислять общие итоги для нескольких столбцов. 
На вкладке Конструктор в группе Показать или скрыть нажмите кнопку Итоги.
В бланке появится строка Итог, а в ячейке столбца «Стоимость доставки» будет указано Группировка.
Измените значение в ячейке строки Итог строки на Sum.
Чтобы выполнить запрос и отобразить результаты в режиме таблицы, нажмите кнопку Выполнить .
Совет: Обратите внимание, что Access добавляет «Сумоф» к началу имени поля, которое вы хотите суммировать. Чтобы изменить заголовок столбца на более осмысленный, например Общееотгрузку, вернитесь в режим конструктора и щелкните в строке поле в столбце «сборы за доставку» в бланке запроса. Поместите курсор рядом с заГрузкой плата за отправку и введите слова всегоза отправку, а затем двоеточие, например: Общее отгрузку: сборы за доставку. ![]()
При необходимости вы можете сохранить запрос и закрыть его.
Вычисление общего итога за исключением нескольких записей
На вкладке Создать в группе Другое нажмите кнопку Конструктор запросов.
В диалоговом окне Добавление таблицы дважды щелкните таблицы «Заказы» и «Сведения о заказах», а затем нажмите кнопку Закрыть, чтобы закрыть диалоговое окно.
Добавьте поле «Дата заказа» из таблицы «Заказы» в первый столбец на бланке запроса.
В строке Условие отбора первого столбца введите Date() -1.
Это выражение исключает записи с текущей датой из вычисляемого итогового значения.
Затем создайте столбец, который вычисляет объем продаж по каждой транзакции. Введите в строку Поле второго столбца на бланке следующее выражение:
Общее значение продаж: (1-[Сведения о заказах].[Скидка]/100)*([Сведения о заказах].[Цена за единицу]*[Сведения о заказах].[Количество])
Убедитесь, что выражение ссылается на поля с типами данных «Число» или «Денежный». Если оно ссылается на поля с другими типами данных, то при попытке выполнения запроса появится сообщение Несоответствие типов данных в выражении условия отбора.
На вкладке Конструктор в группе Показать или скрыть нажмите кнопку Итоги.
В бланке появится строка Итог, а в первом и втором столбцах будет указано Группировка. 
Во втором столбце измените значение в ячейке строки Итог строки на Sum. Функция Sum суммирует отдельные показатели продаж.
Чтобы выполнить запрос и отобразить результаты в режиме таблицы, нажмите кнопку Выполнить .
Сохраните запрос с именем Продажи за день.
Примечание: При следующем открытии запроса в Конструкторе можно заметить небольшие изменения в значениях, указанных для строк Поле и Итог в столбце «Общее значение продаж». Выражение заключено в функцию Sum, а в строке Итог выводится Выражение вместо функции Sum.
Например, если вы использовали пример данных и создали запрос, как показано выше, будет отображено:
Общее значение продаж: Sum((1-[Сведения о заказах].
Скидка/100)*([Сведения о заказах].Цена*[Сведения о заказах].Количество))
К началу страницы
Вычисление итогов по группе с помощью итогового запроса
В этом разделе описано, как создать итоговый запрос для вычисления промежуточных итогов по группам данных. Помните, что по умолчанию итоговый запрос может включать только поле или поля, содержащие данные, по которым выполняется группировка, например поле «Категории», а также поля со значениями, которые вы хотите просуммировать, например поле «Продажи». Итоговые запросы не могут включать другие поля, описывающие значения внутри категории. Если вы хотите отобразить эти описательные данные, создайте второй запрос на выборку, объединяющий поля из итогового запроса с полями, содержащими дополнительные данные. 
В этом разделе описано, как создавать итоговые запросы и запросы на выборку, если требуется определить объем продаж для каждого товара. В качестве примера используются следующие таблицы:
Наименование товара
Эксперименты с C# (игра для всей семьи)
Игры и головоломки
Схема реляционной базы данных
Волшебная микросхема (500 деталей)
Игры и головоломки
Компьютерные маньяки и мифические животные
Приступить к вашему компьютеру! С DVD-диска!
DVD-диски и фильмы
Неуловимая летающая пицца
Внешний дисковод гибких дисков 5.
25» (масштаб 1:4)
Модели для сборки, хобби
Недвижущаяся фигурка бюрократа
Модели для сборки, хобби
Таблица «Сведения о заказах»
Идентификатор заказа
Наименование товара
Цена за единицу
Недвижущаяся фигурка бюрократа
Приступить к вашему компьютеру! С DVD-диска!
Компьютерные маньяки и мифические животные
Как в access посчитать сумму столбца
Advanced: требуется написание экспертов, взаимодействие и многоязыковые навыки. 
Эта статья относится к файлу базы данных Microsoft Access (. mdb) или к файлу базы данных Microsoft Access (ACCDB).
Сводка
В этой статье описываются два метода, которые можно использовать для создания запроса итогов с накоплением. Итоговый запрос итогов — это запрос, в котором итоговое значение каждой записи является суммированием этой записи и всех предыдущих записей. Этот тип запроса полезен для отображения совокупных итогов для группы записей (или за период времени) на графике или отчете.
Note (Примечание ) Вы видите демонстрацию методики, используемой в этой статье, в примере файла QrySmp00. exe.
Дополнительные сведения
Способ 1
Первый метод использует функцию DSum и условия в запросе для создания суммы с накоплением с течением времени. Функция DSum суммирует текущую запись и все предыдущие записи. Когда запрос перемещается на следующую запись, функция DSum выполняется снова и обновляет общий итог.
Следующий пример запроса использует таблицу Orders из учебной базы данных Northwind для создания суммы стоимости доставки за каждый месяц 1997.
В целях повышения производительности примеры данных ограничены одним годом. Так как функция DSum выполняется один раз для каждой записи в запросе, для завершения обработки запроса может потребоваться несколько секунд (в зависимости от скорости компьютера). Чтобы создать и запустить этот запрос, выполните указанные ниже действия.
Откройте учебную базу данных Northwind.
Создайте новый запрос на выборку и добавьте таблицу Orders .
В меню вид выберите пункт итоги.
Note (Примечание ) В Access 2007 щелкните итоги в группе Показать/скрыть на вкладке конструктор .
В первом столбце бланка запроса введите следующее выражение в поле поле и выберите следующие значения для полей «Итого», «Сортировать» и «Показать»:
В выражении в поле поле отображается и сортируется часть года поля OrderDate.
Во втором столбце бланка запроса введите в поле поле следующее выражение и выберите следующие параметры для полей «Итого», «Сортировать» и «Показать»:
Выражение в поле поля сортирует и отображает часть месяца поля Дата заказа в виде целого значения от 1 до 12. 
В третьем столбце бланка запроса введите в поле поле следующее выражение, а для полей Итого и Show выберите следующие параметры.
Note (Примечание ) В следующем примере знак подчеркивания (_) в конце строки используется в качестве символа продолжения строки. При повторном создании этого примера удалите знак подчеркивания в конце строки.
Выражение в поле поле использует функцию DSum () для суммирования поля фрахта, если значения в полях Амонс и Айеар меньше или равны текущей записи, обрабатываемой запросом.
В четвертом столбце бланка запроса введите следующее выражение в поле поле и выберите следующие значения для полей «Итого», «Сортировать» и «Показать»:
Выражение в поле поля отображает каждый месяц в текстовом формате, например Январь, фев, Мар и т. д.
В столбце пятый в бланке запроса введите следующее выражение в поле поле и выберите следующие значения для полей «Итого», «условия» и «Показать»:
Выражение в поле поля фильтрует набор записей запроса, чтобы включить данные только из 1997. 
Выполните запрос. Обратите внимание, что в поле Рунтот отображаются следующие записи с накопленной суммой:
Способ 2
Второй метод использует итоговый запрос с функцией DSum () для создания итоговой суммы по группе.
Приведенный ниже пример запроса использует таблицу «заказы» для суммирования затрат на фрахт для каждого сотрудника, а также для расчета скользящей суммы фрахта. Чтобы создать и запустить запрос, выполните указанные ниже действия.
Откройте учебную базу данных Northwind. mdb.
Создайте новый запрос на выборку и добавьте таблицу Orders.
В Виевмену щелкните итоги.
Note (Примечание ) В Access 2007 щелкните итоги в группе Показать/скрыть на вкладке конструктор .
В первом столбце бланка запроса добавьте следующее поле в поле поле и выберите следующие параметры для полей «Итого» и «Показать»:
В этом поле данные группируются по КодСотрудника.
Во втором столбце бланка запроса добавьте следующее поле в поле поле и выберите следующие параметры для полей «Итого» и «Показать»:
Это поле суммирует данные доставки. />
В третьем столбце бланка запроса введите в поле поле следующее выражение, а для полей Итого и Show выберите следующие параметры.
Note (Примечание ) В следующем примере знак подчеркивания (_) в конце строки используется в качестве символа продолжения строки. При повторном создании этого примера удалите знак подчеркивания в конце строки.
Выражение в поле поле использует функцию DSum () для суммирования поля фрахта, когда EmployeeID меньше текущего Емпалиас, а затем форматирует поле в долларах.
Выполните запрос. Обратите внимание, что в поле Рунтот отображаются следующие записи с накопленной суммой:
RPI.su — самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь.
Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected] . Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.
Примечание: Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы. Для удобства также приводим ссылку на оригинал (на английском языке).
Строка «Итог» в Access позволяет быстро просматривать сводную информацию о данных в столбцах таблицы. Например, если добавить строку «Итог» в таблицу со сведениями о покупках, можно отобразить сумму продаж, общее число единиц товара или количество купленных товаров. />
Примечание: Чтобы отобразить сумму значений столбца, необходимо установить для типа данных столбца значение «Числовой», «Дробный» или «Денежный». Для нечисловых столбцов можно выбрать только итоговый тип «Количество значений».
Добавление строки «Итого»
В области навигации дважды щелкните таблицу, запрос или разделенную форму, чтобы открыть ее в режиме таблицы.
На вкладке Главная в группе Записи нажмите кнопку Итоги.
Под таблицей появится строка Итог.
Щелкните в каждой ячейке строки Итого, где должен отображаться тот или иной итог, и выберите его тип.
Выбор типа итога
После добавления строки итогов вы выбираете тип итогового значения, отображаемого для каждого столбца. Например, агрегаты, такие как суммы, могут отображаться, если выбран тип данных «число», «десятичный» или «денежный». Подсчет значений возможно, если тип данных является текстовым значением.
Давайте сделаем так, чтобы в этом примере таблица отображала сумму значений в столбцах Цена покупки и Купленные товары и общее количество для столбца Позиция, как показано на изображении ниже. 
Вместо слова Итого в первом столбце можно отобразить общее количество записей. Щелкните по строке Итоги для столбца элемент , щелкните стрелку и выберите команду подсчитать, чтобы увидеть общее количество элементов или число.
Потом щелкните стрелку в столбце Цена покупки и выберите пункт Сумма, чтобы увидеть общую цену покупки всех товаров.
Повторите предыдущий шаг для столбца Купленные товары, чтобы увидеть общее количество купленных товаров.
Примечание: Строку Итог нельзя удалить или вырезать, но можно скрыть, выбрав пункт Итоги на вкладке Главная.
Как работает «Сумма» и другие агрегатные функции
Агрегатные функции выполняют вычисления со столбцами данных и возвращают один результат. Они могут быть полезны, если вам нужно рассчитать единственное значение, например сумму или среднее. Следует помнить, что агрегатные функции применяются к столбцам данных. Это может показаться очевидным, но при разработке и использовании баз данных вы обычно уделяете внимание строкам данных и отдельным записям, чтобы пользователи могли вводить данные в поле, перемещать курсор вправо или влево для заполнения следующего поля и т.
д. И наоборот, вы используете агрегатные функции, уделяя основное внимание группам записей в столбцах.
Предположим, что вы используете Access для хранения и отслеживания данных о продажах. С помощью агрегатных функций можно посчитать число проданных товаров в одном столбце, общую сумму продаж — во втором и средний объем продаж для каждого товара — в третьем.
В таблице ниже описаны агрегатные функции Access, которые доступны в строке «Итог». Помните, что в Access есть и другие агрегатные функции, но они используются в запросах.
Поддерживаемые типы данных
Доступна в строке «Итог»?
Вычисляет среднее значение для столбца. Столбец должен содержать числовые или денежные величины или значения даты или времени. Функция игнорирует пустые значения.
Подсчитывает число элементов в столбце.
Все типы данных, за исключением сложных повторяющихся скалярных данных, таких как столбец многозначных списков.
Дополнительные сведения о многозначных списках можно найти в статье рекомендации по созданиюи удалению многозначных полей в руководствах , посвященных многозначным полям.
Возвращает элемент с наибольшим значением. Для текстовых данных наибольшим будет последнее по алфавиту значение, причем Access не учитывает регистр. Функция игнорирует пустые значения.
Возвращает элемент с наименьшим значением. Для текстовых данных наименьшим будет первое по алфавиту значение, причем Access не учитывает регистр. Функция игнорирует пустые значения.
Показывает, насколько значения отклоняются от среднего. Подробнее см. в следующем разделе Дополнительные сведения о функциях «Стандартное отклонение» и «Дисперсия».
Суммирует элементы в столбце. Подходит только для числовых и денежных данных.
Вычисляет статистическую дисперсию для всех значений в столбце.
Подходит только для числовых и денежных данных. Если таблица содержит менее двух строк, Access возвращает пустое значение. Подробнее о функции «Дисперсия» см. в следующем разделе Дополнительные сведения о функциях «Стандартное отклонение» и «Дисперсия».
Дополнительные сведения о функциях «Стандартное отклонение» и «Дисперсия»
Функции Стандартное отклонение и Дисперсия рассчитывают статистические значения. В частности, они применяются для значений, которые лежат в окрестности своего среднего значения и подчиняются закону нормального распределения (находятся на гауссовой кривой).
Предположим, что вы случайным образом выбрали 10 инструментов, изготовленных на одном станке, и измерили их прочность на излом для проверки станка и контроля качества. Если вы рассчитаете среднее значение прочности на излом, то увидите, что для большей части инструментов прочность на излом близка к среднему значению, но также есть инструменты с большими и меньшими показателями. Тем не менее если вы рассчитаете только среднее значение прочности на излом, этот показатель не даст вам никакой информации об эффективности контроля качества, поскольку несколько необычно прочных или хрупких инструментов могут увеличить или уменьшить среднее значение.
Функции вариативности и стандартных отклонений обозначают эту проблему, указывая, насколько близки значения к среднему. Для критической силы меньшие числа, возвращаемые одной из функций, указывают на то, что ваши производственные процессы работают нормально, так как некоторые из них имеют ограниченную степень, так как выше или ниже среднего.
Подробное описание дисперсии и стандартного отклонения выходит за рамки этой статьи. Дополнительные сведения об обеих функциях можно найти на веб-сайтах, посвященных статистике. При использовании функций Дисперсия и Стандартное отклонение помните о следующих правилах:
Эти функции игнорируют пустые значения.
Для функции Дисперсия используется формула:
Для функции Стандартное отклонение используется формула:
Суммирование в отчетах.
Вычисляемые поля в запросах Access Чтобы создать отчет
Вычисления в формах используются:
- при создании вычисляемых полей, т. е. таких элементов управления, значения которых вычисляются на основе значений других элементов управления или встроенных функций;
- для вычисления значения по умолчанию элементов управления формы;
- в выражениях, с помощью которых задаются некоторые свойства элементов управления, например условие на значение, условия для отбора записей в форме и ряд других.
Правила составления выражений в Access мы уже описывали (см. разд. «Использование выражений в запросах» гл. 4). Поэтому здесь мы остановимся в первую очередь на вычисляемых полях формы и опишем, где они нужны и как их создать.
Внимание
Формулы для вычислений в Access записываются с помощью специального синтаксиса, который диктует правила записи формул и в выражениях Access и в процедурах на VBA. Этот синтаксис несколько отличается от принятого в математике, однако во многом на него похож и интуитивно понятен.
Описание синтаксиса вычислительных формул приведено в разд. «Выражения в Access» гл. 4 .
Создание вычисляемых полей
Простейшим вычисляемым полем является поле, в котором должна выводиться текущая дата. Чтобы создать такое поле:
- Создайте свободный элемент управления типа Поле (Text Box) в нужном месте формы.
- Прямо в поле введите выражение =Date () . Знак равенства обязателен.
- Откройте окно Свойства (Properties) для этого элемента и задайте для свойства Формат поля (Format) желаемый формат даты, например Длинный формат даты (Long Date).
- Установите длину поля таким образом, чтобы в нем помещалось необходимое количество символов.
- Измените название метки этого текстового поля. Созданное поле будет выглядеть, как показано на рис. 9.47.
Рис. 9.47 . Вычисляемое поле
Создание отчетов
Отчеты дают вам возможность представить компоненты вашей базы данных в удобном для чтения формате для печати.
Access 2010 позволяет создавать отчеты из таблиц и запросов.
Чтобы создать отчет:
Подобно таблицам и запросам, отчеты можно сортировать и фильтровать. Просто щелкните правой кнопкой мыши поле, которое вы хотите сортировать или фильтровать, затем выберите нужную функцию сортировки или фильтрации.
Удаление полей
Вы можете обнаружить, что ваш отчет содержит некоторые поля, которые вам действительно не нужны. Например, наш отчет содержит поле Zip Code, которое не обязательно в этом списке заказов. К счастью, вы можете удалять поля в отчетах, не затрагивая таблицу или запрос, где вы вытащили ваши данные.
Чтобы удалить поле в отчете:
- Щелкните любую ячейку в поле, которое вы хотите удалить.
- Нажмите клавишу «Удалить».
Когда вы удаляете поле, обязательно удалите его заголовок. Просто выберите заголовок и нажмите клавишу «Удалить».
Печать и сохранение отчетов в режиме предварительного просмотра
Хотя вы можете печатать отчеты с помощью команд в представлении Backstage, вы также можете использовать Предварительный просмотр.
Предварительный просмотр показывает, как ваш отчет будет отображаться на распечатанной странице. Он также позволяет вам изменять способ отображения отчета, распечатывать его и даже сохранять его как другой тип файла.
Чтобы распечатать отчет:
Сохранение отчетов
Вы можете сохранять отчеты в других форматах, чтобы они могли отображаться вне Access. Это называе
Сумма данных с помощью запроса
В этой статье объясняется, как использовать тип функции, называемой агрегатной функцией, для суммирования данных в наборе результатов запроса. В этой статье также кратко объясняется, как использовать другие агрегатные функции, такие как COUNT и AVG , для подсчета или усреднения значений в наборе результатов. Кроме того, в этой статье объясняется, как использовать строку итогов — функцию в Access, которую вы используете для суммирования данных без необходимости изменять структуру запросов. 
Что ты хочешь сделать?
Понять способы суммирования данных
Подготовьте образцы данных
Суммирование данных с помощью строки итогов
Рассчитать общие итоги с помощью запроса
Вычислить итоговые данные по группе с помощью итогового запроса
Суммирование данных по нескольким группам с помощью запроса кросс-таблицы
Справочник по агрегатной функции
Общие сведения о способах суммирования данных
Вы можете просуммировать числовой столбец в запросе, используя тип функции, называемой агрегатной функцией.
Агрегатные функции выполняют вычисление в столбце данных и возвращают одно значение. Access предоставляет множество агрегатных функций, включая Sum , Count , Avg (для вычисления средних значений), Min и Max . Вы суммируете данные, добавляя к запросу функцию Sum , подсчитываете данные с помощью функции Count и так далее.
Кроме того, Access предоставляет несколько способов добавить в запрос Sum и другие агрегатные функции.Вы можете:
Откройте запрос в режиме таблицы и добавьте строку Итого. Строка итогов, функция в Access, позволяет использовать агрегатную функцию в одном или нескольких столбцах набора результатов запроса без изменения структуры запроса. 
Создать итоговый запрос. Итоговый запрос вычисляет промежуточные итоги по группам записей; Строка Итого вычисляет общие итоги для одного или нескольких столбцов (полей) данных.Например, если вы хотите подвести промежуточные итоги всех продаж по городам или по кварталам, вы используете итоговый запрос для группировки записей по желаемой категории, а затем суммируете цифры продаж.
Создайте запрос кросс-таблицы. Запрос кросс-таблицы — это особый тип запроса, результаты которого отображаются в сетке, напоминающей лист Excel. Запросы кросс-таблицы суммируют ваши значения, а затем группируют их по двум наборам фактов: один расположен сбоку (заголовки строк), а другой — сверху (заголовки столбцов).Например, вы можете использовать запрос кросс-таблицы для отображения общих продаж для каждого города за последние три года, как показано в следующей таблице:
Как рассчитать суммарное значение поля в access
На этом шаге будут рассмотрены групповые операции.
При обработке данных в таблицах зачастую бывает необходимо учитывать в запросах не отдельные записи, а итоги, которые вычисляются или формируются определенным образом для различных групп записей в таблице. Например, необходимо выполнить запрос, в котором для каждого студента, было бы подсчитано количество полученных им оценок, а также вычислен средний балл. И затем на основании среднего балла определена стипендия, например, из расчета 100 р. за каждый балл. Другими словами, для отличника (средний балл = 5) размер стипендии должен составить 500 р.
Чтобы выполнить подобные вычисления, необходимо создать новый запрос в режиме конструктора, добавить в него с помощью кнопки Отобразить таблицу таблицы Студенты и Успеваемость, и затем воспользоваться кнопкой Групповые операции
. После этого среди параметров запроса появится строка Групповые операции.
Чтобы вычислить для каждого студента его средний балл, необходимо вначале добавить в запрос поле Фамилия таблицы Студенты. При этом в строке Групповые операции по умолчанию устанавливается значение Группировка.
Итак, для каждой фамилии студента во втором столбце необходимо расположить общее количество оценок, полученных каждым студентом, в третьем — средний балл, и в четвертом — размер начисленной стипендии. Для этого во второй и третий столбцы запроса следует добавить поле Оценки таблицы Успеваемость, так как на основании именно этого поля будет определяться общее число оценок, а также вычисляться средний балл каждого студента.
При выполнении групповых операций можно использовать так называемые итоговые функции (таблица 1), которые следует выбирать из списка в добавленном поле Групповые операции.
Для подсчета количества полученных оценок следует выбрать функцию Count, а для определения среднего балла — функцию Avg. Затем созданный запрос следует сохранить, указав ему имя СреднийБалл.
Чтобы вычислить размер стипендии, необходимо создать выражение, с помощью построителя выражений. Для этого вначале следует выбрать в строке Групповые операции четвертого столбца запроса с помощью разворачивающегося списка пункт Выражение. Затем нужно, находясь в этом поле, нажать кнопку Построить и указать в построителе выражений формулу для вычисления размера стипендии. В данной формуле будет использоваться поле групповой операции с функцией Avg, полученное ранее.
Следует отметить, что подобным полям в запросах, как и вычисляемым полям, Access автоматически присваивает имена. В частности, поле, содержащее количество оценок, было названо Count—Оценка, а поле со средним баллом было названо Аvg—Оценка. Следовательно, в окне Построитель выражений необходимо в формуле для стипендии использовать поле Avg—Оценка сохраненного запроса СреднийБалл. Т.е. нужно вставить в формулу поле Avg—Оценка из папки СреднийБалл и умножить это значение на 100 для определения размера стипендии (рис. 1). Однако необходимо иметь в виду, что если бы рассматриваемый запрос не был сохранен, то в Построителе выражений не появились бы поля Cоunt—Оценка и Avg—Оценка.
Рис. 1. Построитель выражений. Определение размера стипендии
После установки всех описанных параметров макет запроса будет иметь вид, который представлен на рисунке 2.
Рис. 2. Макет запроса с использованием групповых операций
При выполнении созданного таким образом запроса будут определены количество оценок, средний балл и размер стипендии для каждого студента. Однако названия полей с групповыми операциями (количество оценок и средний балл) и выражением (стипендия) были созданы автоматически и не являются в достаточной степени информативными. Поэтому следует изменить свойства полей, установив им подписи. Для этого необходимо открыть запрос в режиме конструктора, и в окне свойств (кнопка ) для каждого из этих полей указать в строке подпись названия КоличествоОценок, СреднийБалл и Стипендия, соответственно.
Результатом выполнения запроса СреднийБалл будет набор записей, представленный на рисунке 3.
Рис. 3. Результат выполнения запроса СреднийБалл
Создание запроса с вычисляемым полем можно увидеть здесь, а взять клип здесь.
013 — Пример вычисления общей суммы в таблице базы данных Microsoft Access с использованием SQL-запроса. Компонент TDBText
Пример вычисления общей суммы в таблице базы данных Microsoft Access с использованием SQL -запроса. Компонент TDBText
Бывают случаи, когда в таблице базы данных нужно сосчитать сумму числовых значений некоторого столбца. Для этого существуют разные методы вычисления, один из которых базируется на использовании соответствующего SQL -запроса.
В данной задаче, на примере таблицы Microsoft Access , вычисляется общая сумма с использованием SQL -запроса. Результат вычисления суммы заносится в компонент типа TDBText .
Используя данный пример, можно производить числовые вычисления над множеством записей заданного столбца.
Условие задачи
Дана таблица, сформированная средствами СУБД Microsoft Access . Таблица содержит данные с начисленной заработной платой работников предприятия.
Таблица имеет следующую структуру.
Приложение должно вычислять суммарную заработную плату всех работников предприятия. Результат суммы должен выводиться в компоненте типа TDBText сразу после загрузки приложения.
Решение
- Построение формы.
Из панели инструментов Tool Palette нужно разместить на форме следующие компоненты (рис. 1):
– из вкладки “dbGo” компонент TADOConnection. Создается объект с именем ADOConnection1. Этот компонент нужен для связи других компонент с файлом базы данных;
– из вкладки “ Data Access ” компонент TDataSource. Создается объект с именем DataSource1. Этот компонент связывает таблицу базы данных ADOTable1 с компонентом визуализации данных DBGrid1;
– из вкладки « Data Access ” компонент типа TDataSource. Создается объект с именем DataSource2. Этот компонент нужен для связи компонента ADOQuery1 с компонентом DBText1;
– из вкладки “dbGo” компонент типа TADOTable. Создается объект с именем ADOTable1. Этот компонент соответствует таблице Workers базы данных;
– из вкладки «dbGo» компонент типа TADOQuery. Этот компонент нужен для формирования SQL-запроса и отображения результата этого запроса в компоненте TDBText;
– из вкладки “ Data Controls ” компонент типа TDataGrid. Создается объект с именем DBGrid1. Этот компонент отображает таблицу Workers базы данных;
– из вкладки « Data Controls ” компонент типа TDBText. Создается объект с именем DBText1. Этот компонент отображает результат SQL-запроса, который формируется в компоненте ADOQuery1.
Результирующая сумма будет выводиться в компоненте DBText1.
Схема связей между компонентами изображена на рисунке 2.

Рис. 1. Компоненты формы

Рис. 2. Схема связей между компонентами программы
- Подключение базы данных. Свойство ConnectionString компонента ADOConnection1.
Процесс подключения приложения к базе данных Microsoft Access подробно описан здесь.
Приложение к базе данных подключается с помощью свойства ConnectionString компонента ADOConnection1 (рис. 3). В свойстве ConnectionString указывается тип поставщика данных и полный путь к файлу базы данных.

Рис. 3. Строка ConnectionString компонента ADOConnection1
- Настройка компонент формы.
Следующим шагом нужно осуществить настройку компонент между собой. Для этого нужно установить:
– в компоненте ADOConnection1 свойство LoginPrompt = “false” (запрет постоянного ввода имени пользователя и пароля при подключении к базе данных);
– в компоненте ADOTable1 свойство Connection = «ADOConnection1”;
– в компоненте ADOQuery1 свойство Connection = “ADOConnection1”;
– в компоненте DataSource1 свойство DataSet = “ADOTable1”;
– в компоненте DataSource2 свойство DataSet = «ADOQuery1”;
– в компоненте DBGrid1 свойство DataSource = “DataSource1”;
– в компоненте DBText1 свойство DataSource = “DataSource2”;
– в компоненте ADOTable1 свойство TableName = “Worker”;
– в компоненте DBGrid1 из свойства Options установить опцию dgEditing = false (запрет внесения данных в ячейки таблицы непосредственно из сетки DBGrid1).
- Свойство Active компонентаADOTable1.
Для отображения данных в DBGrid1 нужно выполнить следующие действия над компонентом ADOTable1 (рис. 4):
– выделить компонент ADOTable1;
– установить свойство Active в значение true.
После этого данные таблицы будут отображены в DBGrid1.

Рис. 4. Свойство Active компонента ADOTable1
- Настройка размеров компонент и формы.
На этом этапе осуществляется корректировка размеров и позиций компонент на форме согласно образцу, показанному на рисунке 5.

Рис. 5. Основная форма приложения
- Скрытие поля ID_Worker в DBGrid1.
Поле ID_Worker целесообразно скрыть, поскольку оно есть ключевым полем. Для этого из контекстного меню нужно вызвать редактор полей « Fields Editor ” компонента ADOTable1. Вызов редактора изображен на рисунке 6.

Рис. 6. Вызов редактора « Fields Editor ”
Откроется окно Form1.ADOTable1 . В этом окне, с помощью мышки, нужно вызвать контекстное меню. В контекстном меню выбрать команду « Add All fields ».
В результате окно редактора примет вид, как показано на рисунке 7.
Рис. 7. Редактор полей Form1.ADOTable1
В редакторе полей отображаются все поля таблицы Worker. Чтобы удалить поле ID_Worker нужно на строке ID_Worker сделать клик правой кнопкой «мыши» и в контекстном меню выбрать команду Delete. После этого можно закрыть редактора Form1.ADOTable1.
В результате, в таблице DBGrid1 будет отображено только два поля (рис. 8).

Рис. 8. Отображение таблицы Worker с двумя полями
- Установка в поле Salary фильтра для отображения с двумя знаками после запятой.
Для того, чтобы в поле Salary корректно отображалось значение суммы (2 знака после запятой), нужно выполнить следующее.
Выделить компонент ADOTable1. Вызвать редактора полей “Fields Editor… ” так как описано в пункте 6. В результате откроется список состоящий из двух полей Name и Salary. Выделить строку с названием Salary. В Object Inspector будет активирован объект с именем ADOTable1Salary.
Следующим шагом в Object Inspector в поле “ Display Format ” нужно установить значение « 0.00 » (рис. 9).

Рис. 9. Установка формата вывода в поле Salary объекта ADOTable1
После выполненных действий, значения в поле Salary таблицы будут выводиться с точностью 2 знака после запятой.
- Настройка компонента Label1.
В компоненте Label1 в свойстве Caption нужно ввести строку « Сумма = ».
- Свойство SQL компонента ADOQuery1.
Компонент DBGrid1 предназначен для вывода суммы на основе SQL -запроса. Сам SQL -запрос формируется в компоненте ADOQuery1 в свойстве « SQL… ” (рис. 10).

Рис. 10. Свойство SQL компонента ADOQuery1
После выбора этого свойства, вызовется редактор “ String List Editor ”, в котором нужно ввести текст SQL -запроса (рис. 11).
Для вычисления суммы нужно ввести следующий текст запроса:
После этого набранный текст запроса нужно подтвердить выбором команды (кнопки) «OK”.

Рис. 11. Текст SQL -запроса
В SQL -запросе будет вызвана функция агрегирования SUM, которая входит в синтаксис языка SQL. Функция SUM вычисляет сумму записей заданного столбца (столбца «Salary»). Также в SQL -запросе формируется новое поле с именем « Сумма ” в котором отображается результат суммы.
Функции агрегирования обеспечивают получение некоторой обобщенной информации.
Язык SQL имеет и другие стандартные функции агрегирования, которые можно использовать в программах:
– COUNT – выполняет подсчет записей в таблице или подсчет ненулевых значений в столбце таблицы;
– MIN – возвращает минимальное значение в столбце;
– MAX – возвращает максимальное значение в столбце;
– AVG – вычисляет среднее значение для значений, которые помещаются в столбце.
- Свойство Active компонента ADOQuery1.
Как было сказано ранее, результат SQL -запроса отображается в компоненте DBText1. SQL -запрос формируется в компоненте ADOQuery1. Для того, чтобы SQL -запрос был доступен для отображения нужно в компоненте ADOQuery1 свойство Active установить в значение “true” (рис. 12).

Рис. 12. Свойство Active компонента ADOQuery1
- Свойство DataField компонента DBText1.
Компонент DBText1 предназначен для отображения только одного значения. Этим значением может быть результат функции агрегирования или значение текущей записи некоторого поля. Поэтому, в этом компоненте предусмотрено свойство DataField (“Поле данных»). В этом свойстве указывается поле, которое должно выводиться в DBText1.
В нашем случае поле имеет название « Сумма ». Это название было введено в тексте SQL -запроса.

Рис. 13. Свойство DataField компонента DBText1
После установления поля DataField результат суммы отобразится в компоненте DBText1 (рис. 14).

Рис. 14. Отображение суммы в компоненте DBText1
- Установка вывода результата с точностью 2 знака после запятой в компоненте DBText1.
Поскольку компонент DBText1 получает данные от компонента ADOQuery1, то нужно настроить компонент ADOQuery1.
Последовательность шагов следующая.
Вызвать редактор полей “ Form1.ADOQuery1 ” компонента ADOQuery1 из контекстного меню (см. п. 7).
В редакторе полей вызвать контекстное меню и в этом меню выбрать команду « Add all fields ” (рис. 15).

Рис. 15. Команда « Add all fields ” из редактора полей Form1.ADOQuery1
В результате будет добавлено одно поле « Сумма », которое формируется в тексте SQL -запроса. Автоматически создается объект с именем ADOQuery1Сумма .
После выделения поля « Сумма », в Object Inspector нужно установить свойство DisplayFormat в значение « 0.00 » (рис. 16).

Рис. 16. Установка вывода результата с точностью 2 знака после запятой в DBText1