Как сделать сумму в access в запросе

Обновлено: 04.07.2024

У меня есть таблица с тикерами, владельцем и количеством акций, и я хочу создать запрос, показывающий общее количество и процент владельцев.

Вот фиктивные данные:

А вот как бы мне хотелось, чтобы это было:

1 ответ

Самый простой способ решить эту проблему - использовать условное агрегирование.

Поскольку вы хотите получить результаты к ticker , вы group by поле ticker в столбце 1, sum поле shares , чтобы получить столбец 2, а затем используйте < > для расчета доли владения для каждого из оставшихся столбцов:

Вы можете использовать форматирование для преобразования полученных десятичных значений в проценты.

Обратите внимание, что этот подход плохо масштабируется, поскольку вы жестко кодируете значения полей в самом запросе, но этот подход неизбежен при переносе строк в столбцы, что противоречит принципам работы большинства СУБД.

Более масштабируемым методом может быть использование коррелированного подзапроса, например:

Или соединение по запросу, который вычисляет общие доли для каждого тикера, например:

В этой главе мы расскажем, как рассчитать группу записей в Access. Мы создали поле, которое вычисляет строку за строкой или запись за записью, чтобы создать итоговое поле или поле промежуточных итогов, но что, если бы мы хотели вычислять по группам записей, а не по отдельным. Мы можем сделать это, создав так называемый совокупный запрос .

Совокупный запрос

Совокупный запрос, также известный как итоговый или сводный запрос, представляет собой сумму, массу или групповые данные. Это может быть общая или полная сумма или группа или подмножество записей. Агрегированные запросы могут выполнять ряд операций. Вот простая таблица, в которой перечислены некоторые способы суммирования по группе записей.

Добавляет значения поля

Среднее значение поля

Минимальное (минимальное) значение поля

Наибольшее (максимальное) значение поля

подсчитывать

Количество значений (записей)

Стандартное отклонение значений полей, включая поля даты / времени

Дисперсия значений поля, включая дату / время

Добавляет значения поля

Среднее значение поля

Минимальное (минимальное) значение поля

Наибольшее (максимальное) значение поля

подсчитывать

Количество значений (записей)

Закройте это диалоговое окно, и будут показаны следующие два поля, как показано в сетке запросов на следующем снимке экрана.

Скриншот

Это простой запрос, и мы отображаем только два поля — название книги и количество, и когда мы запускаем его, мы видим каждый отдельный заказ в нашей базе данных.

Давайте теперь запустим этот запрос, и вы увидите следующие результаты.

Индивидуальный заказ

Вот почему названия книг повторяются. Отдельные заказы были размещены здесь для каждой из этих книг, и они были заказаны в разных количествах. Предположим, мы хотим увидеть сводку только того названия книги, которое было указано только один раз. А затем сумма количества, указанного рядом с ним.

Скриншот

Щелкните по символу сигмы, который откроет другую строку под вашим полем в строке таблицы, и отсюда вы можете указать, как вы группируете этот запрос.

Группа по

Теперь мы сгруппируемся по названию книги, а также суммируем поле количества.

Если мы щелкаем по группам по областям и далее нажимаем на раскрывающееся меню, все опции будут перечислены внизу. В этом случае мы выберем опцию Сумма и затем запустим ваш запрос.

сумма

Теперь вы можете видеть каждую отдельную книгу, а также все отдельные заказы, отображаемые рядом с названием книги.

Индивидуальный

Конкатенация в Access

Мы изучили процесс нормализации, хранения информации в отдельных полях. Иногда вы хотите видеть или просматривать данные вместе, например, объединяя поля имени и фамилии в одно поле. Вы можете отобразить эту информацию вместе, создав вычисляемое поле, объединяющее одну или несколько строк. Вы также можете добавить другие символы, такие как запятая или точка, которую вы можете захотеть.

Для объединения в Access есть два разных оператора, которые можно использовать с амперсандом (&) и знаком плюс (+) .

Амперсанд объединит две строки в одну, тогда как знак плюс объединит две строки и распространит значения NULL, например, если одно значение равно NULL, все выражение будет равно нулю.

Для объединения в Access есть два разных оператора, которые можно использовать с амперсандом (&) и знаком плюс (+) .

Амперсанд объединит две строки в одну, тогда как знак плюс объединит две строки и распространит значения NULL, например, если одно значение равно NULL, все выражение будет равно нулю.

пример

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

Теперь давайте добавим таблицу tblCustomers, чтобы закрыть диалоговое окно отображения таблицы. Мы попробуем объединить некоторые простые именованные поля.

TblCustomers

Давайте теперь добавим поля имени и фамилии и запустим запрос.

Как видите, имя и фамилия разделены на два разных поля.

Имя таблицы

Нам нужно отобразить эту информацию вместе.

Информация вместе

Вернитесь в представление конструктора и в третьем поле создайте новое поле с именем полное имя . Теперь добавьте полное имя и введите выражение, объединяющее эти два поля.

Дизайн Посмотреть полное имя

Давайте запустим запрос, и вы увидите новое вычисляемое поле.

Расчетное поле

Он может объединять информацию из этих двух полей вместе, но не совсем так, как мы этого хотим. Он запускает весь этот текст вместе, потому что он работает так, как мы его просили. Теперь нам нужно попросить Access добавить пробел между информацией из этих двух полей.

Дизайн Посмотреть полное имя

Добавьте пробел внутри кавычек и еще один амперсанд. Это заставляет Access брать информацию из этого поля имени; добавьте его с пробелом, а затем добавьте информацию из поля фамилии в самом конце. Теперь запустите запрос еще раз, и вы увидите следующие результаты.

Вопрос: Необходимо сделать суммирование по полю (денежный формат данных) так, чтобы сумма располагалась внизу таблицы.
Мною было сделано в одном Запросе суммирование соседних полей. В другом Запросе с помощью групповых операций было сделано суммирование по необходимому полю, однако при этом остается только строка с суммой. Как сделать так чтобы в одном Запросе, при сохранении всех записей, происходило одновременное суммирование соседних полей в третьем поле и суммирование итогого поля? Если существует возможность суммирования полей в Таблице буду очень признателен если обьясните как это осуществить

ВАРИАНТ 1. Использование сводной таблицы (Office 2002-2003)
1) откройте таблицу или запрос, затем перейдите в режим сводной таблицы командой ВИД – СВОДНАЯ ТАБЛИЦА;
2) из списка полей перенесите в область итогов сводной таблицы поля, которые необходимо просуммировать (вычислять сумму двух полей в запросе необязательно);
3) из списка полей в область строк сводной таблицы перенесите поле, ПО которому подводятся итоги;
4) добавьте вычисляемое поле в сводную таблицу командой СВОДНАЯ ТАБЛИЦА – ВЫЧИСЛЯЕМЫЕ ИТОГИ И ПОЛЯ – СОЗДАНИЕ ВЫЧИСЛЯЕМОГО ПОЛЯ СВЕДЕНИЙ, введите имя вычисляемого поля, например, ВСЕГО, и формулу [Поле1]+[Поле2];
5) последовательно выделите поля сводной таблицы, для которых подсчитывается итог, и щелкните команду СВОДНАЯ ТАБЛИЦА – АВТОВЫЧИСЛЕНИЯ – СУММА, а также, при необходимости, СВОДНАЯ ТАБЛИЦА – СКРЫТЬ ПОДРОБНОСТИ.

ВАРИАНТ 2. Использование вычисляемых полей в отчете/форме
1) создайте отчет/форму (табличную), содержащие поля таблицы или за

Читайте также: