Как найти среднюю цену в access

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

Выберите нужное действие

  • Способы подсчета данных

  • Подсчет данных с помощью строки итогов

  • Подсчет данных с помощью итогового запроса

  • Справочные сведения об агрегатных функциях

Способы подсчета данных

Подсчитать количество элементов в поле (столбце значений) можно с помощью функции Число. Функция Число принадлежит к ряду функций, называемых агрегатными. Агрегатные функции выполняют вычисления со столбцами данных и возвращают единственное значение. Кроме функции Число, в Access есть следующие агрегатные функции:

  • Сумма для суммирования столбцов чисел;

  • Среднее для вычисления среднего значения в столбце чисел;

  • Максимум для нахождения наибольшего значения в поле;

  • Минимум для нахождения наименьшего значения в поле;

  • Стандартное отклонение для оценки разброса значений относительно среднего значения;

  • Дисперсия для вычисления статистической дисперсии всех значений в столбце.

В Access предусмотрено два способа добавления функции Count и других агрегатных функций в запрос. Вы можете:

  • Открыть запрос в режиме таблицы и добавить строку итогов. Строка итогов позволяет использовать агрегатные функции в одном или нескольких столбцах в результатах запроса без необходимости изменять его структуру.

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

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

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

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

С другой стороны, многие агрегатные функции работают только с данными в полях, имеющих определенный тип данных. Например, функция Сумма работает только с типами данных «Число», «Действительное» и «Денежный». Дополнительные сведения о типах данных, требуемых для каждой функции, см. ниже в разделе Справочные сведения об агрегатных функциях.

Общие сведения о типах данных см. в статье Изменение типа данных для поля.

К началу страницы

Подсчет данных с помощью строки итогов

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

Создание простого запроса на выборку

  1. На вкладке Создать в группе Другое нажмите кнопку Конструктор запросов.

    Изображение ленты Access

  2. Дважды щелкните таблицу или таблицы, которые вы хотите использовать в запросе, а затем нажмите кнопку «Закрыть».

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

    Запрос с тремя полями в бланке

  3. Дважды щелкните поля таблицы, которые вы хотите использовать в запросе.

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

    Каждое поле отображается в столбце в бланке запроса.

  4. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.

    Результаты запроса отображаются в режиме таблицы.

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

  6. При необходимости вы можете сохранить запрос.

Добавление строки итогов

  1. Откройте запрос в режиме таблицы. Если база данных имеет формат ACCDB, щелкните правой кнопкой мыши вкладку документа для запроса и выберите команду Режим таблицы.

    -или-

    Если используется база данных в формате MDB, созданная в более ранней версии Access, на вкладке Главная в группе Режимы щелкните стрелку под кнопкой Режим и выберите значение Режим таблицы.

    -или-

    Дважды щелкните запрос в области навигации. Запрос будет выполнен, а его результаты будут загружены в таблицу.

  2. На вкладке Главная в группе Записи нажмите кнопку Итоги.

    Изображение ленты Access

    Под последней строкой данных в таблице появится новая строка Итог.

  3. В строке Итог щелкните поле, по которому вы хотите выполнить подсчет, и выберите в списке функцию Count.

Скрытие строки итогов

  • На вкладке Главная в группе Записи нажмите кнопку Итоги.

Дополнительные сведения об использовании строки итогов см. в разделе Отображение итогов по столбцу в таблице.

К началу страницы

Подсчет данных с помощью итогового запроса

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

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

Подсчет всех записей в запросе

  1. На вкладке Создать в группе Другое нажмите кнопку Конструктор запросов.

    Изображение ленты Access

  2. Дважды щелкните таблицу, которую вы хотите использовать в запросе, и нажмите кнопку «Закрыть».

    Таблица появится в окне в верхней части конструктора запросов.

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

  4. На вкладке Конструктор в группе Показать или скрыть нажмите кнопку Итоги.

    В бланке появится строка Итог, а в строке для каждого поля запроса будет указано Группировка.

  5. В строке Итог щелкните поле, по которому вы хотите выполнить подсчет, и выберите в списке функцию Count.

  6. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.

    Результаты запроса отображаются в режиме таблицы.

  7. При необходимости вы можете сохранить запрос.

Подсчет записей в группе или категории

  1. На вкладке Создать в группе Другое нажмите кнопку Конструктор запросов.

    Изображение ленты Access

  2. Дважды щелкните таблицу или таблицы, которые вы хотите использовать в запросе, а затем нажмите кнопку «Закрыть».

    Таблица (или таблицы) появится в окне в верхней части конструктора запросов.

  3. Дважды щелкните поле, содержащее данные категории, а также поле, значения в котором вы хотите подсчитать. Запрос не может содержать других описательных полей.

  4. На вкладке Конструктор в группе Показать или скрыть нажмите кнопку Итоги.

    В бланке появится строка Итог, а в строке для каждого поля запроса будет указано Группировка.

  5. В строке Итог щелкните поле, по которому вы хотите выполнить подсчет, и выберите в списке функцию Count.

  6. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.

    Результаты запроса отображаются в режиме таблицы.

  7. При необходимости вы можете сохранить запрос.

К началу страницы

Справочные сведения об агрегатных функциях

В следующей таблице перечислены и отписаны агрегатные функции Access, которые можно использовать в строке итогов и в запросах. Помните, что в Access предусмотрено больше агрегатных функций для запросов, чем для строки итогов. Кроме того, при работе с проектом Access (внешней базой данных Access, которая подключается к базе данных Microsoft SQL Server) можно использовать расширенный набор агрегатных функций, предоставляемый SQL Server. Дополнительные сведения о них см. в электронной документации Microsoft SQL Server.

Функция

Описание

Поддерживаемые типы данных

Сумма

Суммирует элементы в столбце. Подходит только для числовых и денежных данных.

«Число», «Действительное», «Денежный»

Среднее

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

«Число», «Действительное», «Денежный», «Дата/время»

Число

Подсчитывает число элементов в столбце.

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

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

Максимум

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

«Число», «Действительное», «Денежный», «Дата/время»

Минимум

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

«Число», «Действительное», «Денежный», «Дата/время»

Стандартное отклонение

Показывает, насколько значения отклоняются от среднего.

Дополнительные сведения об этой функции см. в статье Отображение итогов по столбцу в таблице.

«Число», «Действительное», «Денежный»

Дисперсия

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

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

«Число», «Действительное», «Денежный»

К началу страницы

Запрос с итоговыми вычислениями

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

SUM( поле)-вычисляет суммы всех
значений заданного поля или выражения
в группе.

AVG(поле)-вычисляет среднее
арифметическое заданного поля или
выражения для каждой группы.

MIN(поле), MAX(поле)– находят
наименьшее и наибольшее значения
заданного поля или выражения в каждой
группе.

COUNT(поле)-находит число записей
в каждой группе.

FIRST(поле), LAST(поле)— находят
первое и последнее значения заданного
поля или выражения в каждой группе.

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

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

Для решения этой задачи нужно создать
запрос со строкой Групповая операция.
Это можно сделать, щёлкнув по кнопке ∑
или в меню, выбрав команду. Группировка
устанавливается для того поля, одинаковое
значение которого определяет группу.
В нашей задаче таким полем является
изделие с именемIzd. Для полейценав 1 квартале (с1) игодовой выпуск(God)в этой строке выберем из выпадающего
списка функцииAvg, для получения
средней цены иMax, для максимального
годового выпуска. Вид конструктора
(рис. 3.5).

Рис. 3.5

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

SELECT izd,Avg[1с] AS [Сред цена],Max[god]
AS [Макс выпуск]

FROM Фирма

GROUP BYizd;

После выполнения запроса получим таблицу
(рис 3.6).

Рис. 3.6

Итоговые записи могут быть получены по
разным группам.

Рассмотрим другую задачу, в которой
группировка идет по другому полю(по
названию фирмы).

Задача 3.4.По каждой фирме найти
изделия с максимальным и минимальным
годовым выпуском.

Максимальный и минимальный выпуски
можно вычислить с помощью соответствующих
функций. Но найти соответствующие этим
значениям изделия можно только в
упорядоченной по годовому выпуску
таблице. При этом следует учесть, что
группировка ( предложение GROUP BY)
автоматически устанавливает сортировку
по возрастанию поля группировки, а
функцииLASTиFIRST привязаны к
расположению аргумента в исходной
таблице.

Для этой задачи создадим копию таблицы
Фирма, в которой все записи будут
упорядочены по возрастанию значений
поляGod (годовой выпуск продукции)
и сохраним ее с именемФирма1.

Используя итоговые функции FirstиLast, которые возвращают значение
полей из первой и последней записи в
каждой группе результирующего набора
записей, можно получить информацию о
максимальных (минимальных) выпусках и
соответствующих им названиях изделий.
Конструктор запроса должен быть
заполнен следующим образом (рис. 3.7).

Рис. 3.7

В режиме SQLэтот запрос выглядит
следующим образом.

SELECTfirm,Last([God]),Last([Izd]),First([God]),First([Izd])

FROMФирма1

GROUP BYFirm;

После выполнения запроса получаем
следующий результат (рис. 3.8):

Соседние файлы в папке access

  • #

    01.06.2017303.1 Кб10db2.mdb

  • #
  • #

    01.06.2017483.33 Кб16Книготорговля.accdb

  • #

    01.06.2017286.72 Кб15Книготорговля.mdb

  • #

    01.06.2017630.78 Кб34Магазины.accdb

  • #

    01.06.2017352.26 Кб11Магазины.mdb

  • #

Студворк — интернет-сервис помощи студентам

Добрый день!

Нужно сделать: «Найти среднее значение общей цены для каждого вида товара. Между группами поставить разрыв страницы».

Если я не ошибаюсь то это надо сделать в виде отчета. с отчетами никогда не работа. да и с access познакомилась можно сказать на этой неделе…

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

Подскажите что не так делаю, как исправить?
Ну и к слову, возможно я неправильно поняла задание, буду рада если поправите. Заранее спасибо!

Функция avg в access

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

Синтаксис

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

Примечания

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

Функция Avg не учитывает поля со значением Null.

Можно использовать AVG в выражении запроса и в свойстве SQL объекта QueryDef или при создании объекта набор записей на основе запроса SQL.

Примеры

Выберите AVG ([Цена]) как Выражение1 из Продуктсалес;

Возвращает среднее арифметическое всех значений поля UnitPrice из таблицы «Продуктсалес» и отображается в столбце Выражение1.

Выберите AVG ([Салеприце]) как Авгсалеприце, AVG ([Скидка]) как Авгдискаунт из Продуктсалес;

Возвращает среднее значение поля «Салеприце» и «скидка» в таблице Продуктсалес. Результаты отображаются в столбце «Авгсалеприце» и «Авгдискаунт» соответственно Возвращает среднее арифметическое всех «Салеприце», где «количество» продано более 10. Результаты отображаются в столбце «Авгсалеприце».

Выберите ABS (AVG ([Скидка])) в качестве Абсаверажедискаунт из Продуктсалес;

Возвращает абсолютное значение поля «Скидка» и отображается в столбце «Абсаверажедискаунт».

Примечание: Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Была ли информация полезной? Для удобства также приводим ссылку на оригинал (на английском языке).

Область применения: Access 2013 | Access 2016 Applies to: Access 2013 | Access 2016

Вычисляет среднее арифметическое набора значений, содержащегося в указанном поле запроса. Calculates the arithmetic mean of a set of values contained in a specified field on a query.

Синтаксис Syntax

AVG ( выражение ) Avg( expr )

Заполнитель expr представляет строковое выражение, определяющее поле, содержащее числовые данные, которые требуется усреднить, или выражение, которое выполняет вычисления с использованием данных в этом поле. The expr placeholder represents a string expression identifying the field that contains the numeric data you want to average or an expression that performs a calculation using the data in that field. Операнды в expr могут включать имя поля таблицы, константу или функцию (которая может быть встроенной или пользовательской, но не одной из других статистических функций SQL). Operands in expr can include the name of a table field, a constant, or a function (which can be either intrinsic or user-defined but not one of the other SQL aggregate functions).

Примечания Remarks

Среднее арифметическое вычисление вычисляет среднее арифметическое значение (сумма значений, деленная на количество значений). **** The average calculated by Avg is the arithmetic mean (the sum of the values divided by the number of values). Можно использовать AVG, например, для вычисления средней стоимости доставки. You could use Avg, for example, to calculate average freight cost.

Функция AVG не включает нулевые поля **** в вычисление. The Avg function does not include any Null fields in the calculation.

Можно использовать AVG в выражении запроса и в свойстве SQL объекта QueryDef или при создании объекта Recordset на основе SQL запроса. You can use Avg in a query expression and in the SQL property of a QueryDef object or when creating a Recordset object based on an SQL query.

Пример Example

В этом примере используется таблица заказы для расчета средней стоимости фрахта для заказов со стоимостью доставки на $100. This example uses the Orders table to calculate the average freight charges for orders with freight charges over $100.

В этом примере вызывается процедура EnumFields, которую можно найти в примере оператора SELECT. This example calls the EnumFields procedure, which you can find in the SELECT statement example.

См. также See also

Поддержка и обратная связь Support and feedback

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Have questions or feedback about Office VBA or this documentation? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь. Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.

Очередь просмотра

Очередь

  • Удалить все
  • Отключить

Хотите сохраните это видео?

  • Пожаловаться

Пожаловаться на видео?

Выполните вход, чтобы сообщить о неприемлемом контенте.

Понравилось?

Не понравилось?

Текст видео

Если вы не знаете как создать SQL-запросы в базе данных Microsoft Access, то посмотрите это видео.
На примере стандартной базы «Борей» будут рассмотрены все основные приемы и особенности языка SQL в рамках программы MS Access 2016.

После просмотра данного видеоурока вы поймете для чего нужны агрегатные функции SUM, AVG, COUNT, MIN, MAX в SQL-запросах.

Убедитесь, что программа Microsoft Access очень проста и не требует дополнительных знаний в освоении.

Лекция 6 Тема: Запросы. Вычисления и групповые операциию

6.1. Вычисляемые поля.

6.2. Создание выражений с помощью Построителя выражений.

6.3. Обзор встроенных функций СУБД MS Access.

6.4. Итоговые запросы.

6.5. Перекрестные запросы.

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

В QBE СУБД MS Access такие возможности предоставляются через вычисляемые поля и групповые операции.

6.1. Вычисляемые поля

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

Стоимость: Товары! Цена * Количество * (1-Скидка)

КоличествоМужчин: Sum(IIf(Пол = «м»; 1; 0))

Стоимость, КоличествоМужчин и ФИО являются именами вычисляемых полей и отображаются в режиме таблицы в заголовке столбца, символ двоеточие исполняет роль разделителя между именем вычисляемого поля и выражением.

Если имя таблицы или поля содержит пробелы, то его идентификатор обязан в выражении заключаться в квадратные скобки, например

Стоимость: Цена*[Количество товара]

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

Обновить вычисленные результаты вручную невозможно.

Для построения сложных выражений в СУБД MS Access входит утилита, называемая Построитель выражений.

6.2. Создание выражений с помощью Построителя выражений

Построитель выражений можно запустить щелкнув по клавише Построить на панели инструментов Конструктор запросов или выбрав в контекстном меню поля бланка запроса QBE команду меню Построить….

Рис.6.1. Диалоговое окно Построитель выражений

Рис.6.2. Диалоговое окно Построителя выражений
со сформированным выражением

6.3. Обзор встроенных функций СУБД MS Access

СУБД MS Access содержит более 100 встроенных функций (рис.6.3), которые можно использовать при формировании вычисляемого поля или при задании условия отбора.

Рис.6.3. Диалоговое окно Построителя выражений
со списком встроенных функций

Все встроенные функции в Построителе выражений сгруппированы по функциональному назначению.

При выборе функции в правом окне построителя, в нижней области окна Построителя выражений отображается синтаксис этой функции. Для более детальной справки необходимо щелкнуть по клавише Справка.

Обзор всех встроенных функций выходит за рамки лекции, поэтому рассмотрим наиболее используемые.

Таблица 6.1

Функции категории Дата/время

Возвращает значение дня месяца от 1 до 31

Возвращает значение месяца от 1 до 12

Возвращает название месяца соответствующего номеру месяца: 1 – январь, 2 – февраль, и т. д. Если значение аргумента флаг Истина, то функция возвращает аббревиатуру месяца: 1 – янв, 2 – фев и т. д.

Возвращает значение года от 100 до 9999

Если аргумент число не указан, возвращает значение дня недели от 1 (воскресенье) до 7 (суббота). Если аргумент число имеет значение 0, то возвращает значение дня недели от 1 (понедельник) до 7 (воскресенье)

Возвращает целое число от 0 од 23, представляющее значение часа

Возвращает числовое значение в зависимости от значения аргумента интервал:

«q» – квартал (от 1 до 4);

«m» – месяц (от 1 до 12);

«yyyy» – год (от 100 до 9999);

«ww» – неделя (от 1 до 53);

и т. п. (см. справку по функции).

Возвращает текущую системную дату

Функции категории Проверка

Возвращает значение Истина если значение переменной (значение поля в источнике данных) равно Null

Возвращает значение Истина если значение переменной (значение поля в источнике данных) имеет один из числовых типов данных

Функции категории Управление

IIf(условие; выр1; выр2)

Возвращает значение выражения выр1 если значение аргумента условие Истина и возвращает значение выражения выр2 если значение аргумента условие Ложь. Данная функция аналогична функции ЕСЛИ в MS Excel.

Продолжение таблицы 6.1

Функции категории Текстовые

Возвращает n левых символов аргумента текст

Возвращает n правых символов аргумента текст

Mid(текст; нач_поз[; n])

Возвращает n символов начиная с позиции нач_поз аргумента текст. Если аргумент n не указан, то возвращает все символы до конца строки начиная с позиции нач_поз аргумента текст.

Возвращает количество символов (длину строки) в аргументе текст

Возвращает строковое значение аргумента текст без начальных пробелов

Возвращает строковое значение аргумента текст без заключительных пробелов

Возвращает строковое значение аргумента текст без начальных и заключительных пробелов

Возвращает строковое значение аргумента число

Возвращает значение аргумента переменная в формате заданным аргументом формат

6.3. Итоговые запросы

При анализе данных очень часто интересуют не отдельные записи, а итоговые значения по группам данных, например:

— количество сделок с Партнерами за определенный промежуток времени;

— средний объем продаж по каждому месяцу за предыдущий год.

Ответы на такие вопросы дает итоговый запрос.

Для вычисления итоговых значений необходимо нажать кнопку Групповые операции на панели инструментов Конструктор запросов, чтобы в бланке QBE появилась строка Групповая операция (после имени таблицы).

По умолчанию для каждого поля, занесенного в бланк запроса, устанавливается значение Группировка (итоги не подводятся).

Для подведения итогов необходимо заменить установку Группировка на конкретную итоговую функцию. В СУБД MS Access предусмотрено 9 функций (табл. 6.2), обеспечивающих выполнение групповых операций.

Таблица 6.2

Функции категории Статистические

Возвращает сумму набора значений

Возвращает среднее арифметическое набора значений

Возвращает наименьшее значение из набора значений

Возвращает наибольшее значение из набора значений

Возвращает количество записей в наборе значений отличных от Null

Возвращает первое значение поля в группе

Возвращает последнее значение поля в группе

Возвращает среднеквадратичное отклонение набора значений

Возвращает дисперсию набора значений

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

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

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

6.4. Перекрестные запросы

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

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

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

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

Функция avg в access

На этом шаге будут рассмотрены групповые операции.

При обработке данных в таблицах зачастую бывает необходимо учитывать в запросах не отдельные записи, а итоги, которые вычисляются или формируются определенным образом для различных групп записей в таблице. Например, необходимо выполнить запрос, в котором для каждого студента, было бы подсчитано количество полученных им оценок, а также вычислен средний балл. И затем на основании среднего балла определена стипендия, например, из расчета 100 р. за каждый балл. Другими словами, для отличника (средний балл = 5) размер стипендии должен составить 500 р.

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

Чтобы вычислить для каждого студента его средний балл, необходимо вначале добавить в запрос поле Фамилия таблицы Студенты. При этом в строке Групповые операции по умолчанию устанавливается значение Группировка.

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

При выполнении групповых операций можно использовать так называемые итоговые функции (таблица 1), которые следует выбирать из списка в добавленном поле Групповые операции.

Для подсчета количества полученных оценок следует выбрать функцию Count, а для определения среднего балла — функцию Avg. Затем созданный запрос следует сохранить, указав ему имя СреднийБалл.

Чтобы вычислить размер стипендии, необходимо создать выражение, с помощью построителя выражений. Для этого вначале следует выбрать в строке Групповые операции четвертого столбца запроса с помощью разворачивающегося списка пункт Выражение. Затем нужно, находясь в этом поле, нажать кнопку Построить и указать в построителе выражений формулу для вычисления размера стипендии. В данной формуле будет использоваться поле групповой операции с функцией Avg, полученное ранее.

Следует отметить, что подобным полям в запросах, как и вычисляемым полям, Access автоматически присваивает имена. В частности, поле, содержащее количество оценок, было названо CountОценка, а поле со средним баллом было названо АvgОценка. Следовательно, в окне Построитель выражений необходимо в формуле для стипендии использовать поле AvgОценка сохраненного запроса СреднийБалл. Т.е. нужно вставить в формулу поле AvgОценка из папки СреднийБалл и умножить это значение на 100 для определения размера стипендии (рис. 1). Однако необходимо иметь в виду, что если бы рассматриваемый запрос не был сохранен, то в Построителе выражений не появились бы поля CоuntОценка и AvgОценка.


Рис. 1. Построитель выражений. Определение размера стипендии

После установки всех описанных параметров макет запроса будет иметь вид, который представлен на рисунке 2.


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

При выполнении созданного таким образом запроса будут определены количество оценок, средний балл и размер стипендии для каждого студента. Однако названия полей с групповыми операциями (количество оценок и средний балл) и выражением (стипендия) были созданы автоматически и не являются в достаточной степени информативными. Поэтому следует изменить свойства полей, установив им подписи. Для этого необходимо открыть запрос в режиме конструктора, и в окне свойств (кнопка ) для каждого из этих полей указать в строке подпись названия КоличествоОценок, СреднийБалл и Стипендия, соответственно.

Результатом выполнения запроса СреднийБалл будет набор записей, представленный на рисунке 3.


Рис. 3. Результат выполнения запроса СреднийБалл

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

На следующем шаге вы познакомитесь с перекрестными запросами.

Предыдущий шаг Содержание Следующий шаг

Агрегатные функции SQL — SUM, MIN, MAX, AVG, COUNT

Будем учиться подводить итоги. Нет, это ещё не итоги изучения SQL, а итоги значений столбцов таблиц базы данных. Агрегатные функции SQL действуют в отношении значений столбца с целью получения единого результирующего значения. Наиболее часто применяются агрегатные функции SQL SUM, MIN, MAX, AVG и COUNT. Следует различать два случая применения агрегатных функций. Первый: агрегатные функции используются сами по себе и возвращают одно результирующее значение. Второй: агрегатные функции используются с оператором SQL GROUP BY, то есть с группировкой по полям (столбцам) для получения результирующих значений в каждой группе. Рассмотрим сначала случаи использования агрегатных функций без группировки.

Функция SQL SUM

Функция SQL SUM возвращает сумму значений столбца таблицы базы данных. Она может применяться только к столбцам, значениями которых являются числа. Запросы SQL для получения результирующей суммы начинаются так:

После этого выражения следует FROM (ИМЯ_ТАБЛИЦЫ), а далее с помощью конструкции WHERE может быть задано условие. Кроме того, перед именем столбца может быть указано DISTINCT, и это означает, что учитываться будут только уникальные значения. По умолчанию же учитываются все значения (для этого можно особо указать не DISTINCT, а ALL, но слово ALL не является обязательным).

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

Сначала работать будем с базой данных фирмы — Company1. Скрипт для создания этой базы данных, её таблиц и заполения таблиц данными — в файле по этой ссылке .

Пример 1. Есть база данных фирмы с данными о её подразделениях и сотрудниках. Таблица Staff помимо всего имеет столбец с данными о заработной плате сотрудников. Выборка из таблицы имеет следующий вид (для увеличения картинки щёлкнуть по ней левой кнопкой мыши):

Для получения суммы размеров всех заработных плат используем следующий запрос (на MS SQL Server — с предваряющей конструкцией USE company1;):

Этот запрос вернёт значение 287664,63.

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

Пример 2. Вывести сумму комиссионных, получаемых всеми сотрудниками с должностью Clerk.

Функция SQL MIN

Функция SQL MIN также действует в отношении столбцов, значениями которых являются числа и возвращает минимальное среди всех значений столбца. Эта функция имеет синтаксис аналогичный синтаксису функции SUM.

Пример 3. База данных и таблица — те же, что и в примере 1.

Требуется узнать минимальную заработную плату сотрудников отдела с номером 42. Для этого пишем следующий запрос (на MS SQL Server — с предваряющей конструкцией USE company1;):

Запрос вернёт значение 10505,90.

И вновь упражнение для самостоятельного решения. В этом и некоторых других упражнениях потребуется уже не только таблица Staff, но и таблица Org, содержащая данные о подразделениях фирмы:

Пример 4. К таблице Staff добавляется таблица Org, содержащая данные о подразделениях фирмы. Вывести минимальное количество лет, проработанных одним сотрудником в отделе, расположенном в Бостоне.

Функция SQL MAX

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

Пример 5. База данных и таблица — те же, что и в предыдущих примерах.

Требуется узнать максимальную заработную плату сотрудников отдела с номером 42. Для этого пишем следующий запрос (на MS SQL Server — с предваряющей конструкцией USE company1;):

Запрос вернёт значение 18352,80

Пришло время упражнения для самостоятельного решения.

Пример 6. Вновь работаем с двумя таблицами — Staff и Org. Вывести название отдела и максимальное значение комиссионных, получаемых одним сотрудником в отделе, относящемуся к группе отделов (Division) Eastern. Использовать JOIN (соединение таблиц).

Функция SQL AVG

Указанное в отношении синтаксиса для предыдущих описанных функций верно и в отношении функции SQL AVG. Эта функция возвращает среднее значение среди всех значений столбца.

Пример 7. База данных и таблица — те же, что и в предыдущих примерах.

Пусть требуется узнать средний трудовой стаж сотрудников отдела с номером 42. Для этого пишем следующий запрос (на MS SQL Server — с предваряющей конструкцией USE company1;):

Результатом будет значение 6,33

В следующем упражнении для самостоятельного решения помимо агрегатной функции требуется использовать также предикат BETWEEN.

Пример 8. Работаем с одной таблицей — Staff. Вывести среднюю зарплату сотрудников со стажем от 4 до 6 лет.

Функция SQL COUNT

Функция SQL COUNT возвращает количество записей таблицы базы данных. Если в запросе указать SELECT COUNT(ИМЯ_СТОЛБЦА) . то результатом будет количество записей без учёта тех записей, в которых значением столбца является NULL (неопределённое). Если использовать в качестве аргумента звёздочку и начать запрос SELECT COUNT(*) . то результатом будет количество всех записей (строк) таблицы.

Пример 9. База данных и таблица — те же, что и в предыдущих примерах.

Требуется узнать число всех сотрудников, которые получают комиссионные. Число сотрудников, у которых значения столбца Comm — не NULL, вернёт следующий запрос (на MS SQL Server — с предваряющей конструкцией USE company1;):

Результатом будет значение 11.

Пример 10. База данных и таблица — те же, что и в предыдущих примерах.

Если требуется узнать общее количество записей в таблице, то применяем запрос со звёздочкой в качестве аргумента функции COUNT (на MS SQL Server — с предваряющей конструкцией USE company1;):

Результатом будет значение 17.

В следующем упражнении для самостоятельного решения потребуется использовать подзапрос.

Пример 11. Работаем с одной таблицей — Staff. Вывести число сотрудников в отделе планирования (Plains).

Агрегатные функции вместе с SQL GROUP BY (группировкой)

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

Работать будем с базой данных «Портал объявлений 1». Скрипт для создания этой базы данных, её таблицы и заполения таблицы данных — в файле по этой ссылке .

Пример 12. Итак, есть база данных портала объявлений. В ней есть таблица Ads, содержащая данные об объявлениях, поданных за неделю. Столбец Category содержит данные о больших категориях объявлений (например, Недвижимость), а столбец Parts — о более мелких частях, входящих в категории (например, части Квартиры и Дачи являются частями категории Недвижимость). Столбец Units содержит данные о количестве поданных объявлений, а столбец Money — о денежных суммах, вырученных за подачу объявлений.

Итоговый запрос из базы данных 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. В окне диалога Сохранение введите имя Итоговый запрос и щелкните на кнопке ОК.

To get the average for each fieldname, just do this in a query:

SELECT FieldName, Avg(FieldNum) as AvgQty
FROM MyTable
GROUP BY FieldName
ORDER BY FieldName

This will also sort the fieldname column for you.

EDIT:
I think you can do what you asked for in your comment, but you will need a separate query based on the one above. You’ll need a UNION query to do it. Something like:

SELECT Top 1 FieldName, AvgQty
FROM Query1
ORDER BY AvgQty ASC

UNION ALL

SELECT Top 1 FieldName, AvgQty
FROM Query1
ORDER BY AvgQty DESC

I’m doing that off the top of my head, so it may not be perfect.

As for formatting the field, do a google on «VBA Format Number» and you should be able to find some examples. I think it might make the above query look something like:

SELECT Top 1 FieldName, Format(AvgQty, "##.#") as AvgQty1
FROM Query1
ORDER BY AvgQty ASC

UNION ALL

SELECT Top 1 FieldName, Format(AvgQty, "##.#") as AvgQty1
FROM Query1
ORDER BY AvgQty DESC

Понравилась статья? Поделить с друзьями:
  • Как исправить размер значков на рабочем столе windows 10
  • Питон как найти сумму цифр двузначного числа
  • Как найти длины сторон прямоугольника по координатам
  • Как быстро найти делители большого числа
  • Как найти длину стороны если известен периметр