Функция Avg
Вычисляет среднее арифметическое набора значений, содержащихся в определенном поле запроса.
Синтаксис
Avg ( выражение )
Аргумент выражение представляет собой строковое выражение, определяющее поле с числовыми данными, для которых требуется найти среднее арифметическое, или выражение, с помощью которого производится расчет. Операндом в выражении может быть имя таблицы, константа или функция (встроенная или определяемая пользователем, но не другая агрегатная функция SQL).
Примечания
Значение, полученное с помощью функции Avg, является средним арифметическим (суммой значений, деленной на их количество). Например, вы можете использовать функцию Avg, чтобы подсчитать среднюю стоимость доставки.
Функция Avg не учитывает поля со значением Null.
Avg можно использовать в выражении запроса и в свойстве SQL объекта QueryDef или при создании набор записей на основе SQL запроса.
Примеры
SELECT Avg([UnitPrice]) AS Expr1 FROM ProductSales;
Возвращает среднее значение всех значений поля «Цена» из таблицы «ProductSales» и отображает его в столбце «Вырасть1».
SELECT Avg([SalePrice]) AS AvgSalePrice, Avg([Discount]) AS AvgDiscount FROM ProductSales;
Возвращает среднее значение полей «ЦенаПродажи» и «Скидка» из таблицы ProductSales. Результаты отображаются в столбце «AvgSalePrice» и «AvgDiscount» соответственно, возвращая среднее значение всех продаж «SalePrice», где проданное «Количество» больше 10. Результаты отображаются в столбце «AvgSalePrice».
SELECT Abs(Avg([Discount])) AS AbsAverageDiscount FROM ProductSales;
Возвращает абсолютную величину среднего значения поля Discount и отображает в столбце «AbsAverageDiscount».
Как рассчитать средний балл в аксесс
На этом шаге будут рассмотрены групповые операции.
При обработке данных в таблицах зачастую бывает необходимо учитывать в запросах не отдельные записи, а итоги, которые вычисляются или формируются определенным образом для различных групп записей в таблице. Например, необходимо выполнить запрос, в котором для каждого студента, было бы подсчитано количество полученных им оценок, а также вычислен средний балл. И затем на основании среднего балла определена стипендия, например, из расчета 100 р. за каждый балл. Другими словами, для отличника (средний балл = 5) размер стипендии должен составить 500 р.
Чтобы выполнить подобные вычисления, необходимо создать новый запрос в режиме конструктора, добавить в него с помощью кнопки Отобразить таблицу таблицы Студенты и Успеваемость, и затем воспользоваться кнопкой Групповые операции
. После этого среди параметров запроса появится строка Групповые операции.
Чтобы вычислить для каждого студента его средний балл, необходимо вначале добавить в запрос поле Фамилия таблицы Студенты. При этом в строке Групповые операции по умолчанию устанавливается значение Группировка.
Итак, для каждой фамилии студента во втором столбце необходимо расположить общее количество оценок, полученных каждым студентом, в третьем — средний балл, и в четвертом — размер начисленной стипендии. Для этого во второй и третий столбцы запроса следует добавить поле Оценки таблицы Успеваемость, так как на основании именно этого поля будет определяться общее число оценок, а также вычисляться средний балл каждого студента.
При выполнении групповых операций можно использовать так называемые итоговые функции (таблица 1), которые следует выбирать из списка в добавленном поле Групповые операции.
Таблица 1. Основные итоговые функции
Avg
Мin
Max
Count
First
Last
Для подсчета количества полученных оценок следует выбрать функцию Count, а для определения среднего балла — функцию Avg. Затем созданный запрос следует сохранить, указав ему имя СреднийБалл.
Чтобы вычислить размер стипендии, необходимо создать выражение, с помощью построителя выражений. Для этого вначале следует выбрать в строке Групповые операции четвертого столбца запроса с помощью разворачивающегося списка пункт Выражение. Затем нужно, находясь в этом поле, нажать кнопку Построить и указать в построителе выражений формулу для вычисления размера стипендии. В данной формуле будет использоваться поле групповой операции с функцией Avg, полученное ранее.
Следует отметить, что подобным полям в запросах, как и вычисляемым полям, Access автоматически присваивает имена. В частности, поле, содержащее количество оценок, было названо Count—Оценка, а поле со средним баллом было названо Аvg—Оценка. Следовательно, в окне Построитель выражений необходимо в формуле для стипендии использовать поле Avg—Оценка сохраненного запроса СреднийБалл. Т.е. нужно вставить в формулу поле Avg—Оценка из папки СреднийБалл и умножить это значение на 100 для определения размера стипендии (рис. 1). Однако необходимо иметь в виду, что если бы рассматриваемый запрос не был сохранен, то в Построителе выражений не появились бы поля Cоunt—Оценка и Avg—Оценка.
Рис. 1. Построитель выражений. Определение размера стипендии
После установки всех описанных параметров макет запроса будет иметь вид, который представлен на рисунке 2.
Рис. 2. Макет запроса с использованием групповых операций
При выполнении созданного таким образом запроса будут определены количество оценок, средний балл и размер стипендии для каждого студента. Однако названия полей с групповыми операциями (количество оценок и средний балл) и выражением (стипендия) были созданы автоматически и не являются в достаточной степени информативными. Поэтому следует изменить свойства полей, установив им подписи. Для этого необходимо открыть запрос в режиме конструктора, и в окне свойств (кнопка ) для каждого из этих полей указать в строке подпись названия КоличествоОценок, СреднийБалл и Стипендия, соответственно.
Результатом выполнения запроса СреднийБалл будет набор записей, представленный на рисунке 3.
Рис. 3. Результат выполнения запроса СреднийБалл
Создание запроса с вычисляемым полем можно увидеть здесь, а взять клип здесь.
На следующем шаге вы познакомитесь с перекрестными запросами.
Подсчет данных при помощи запроса
В этой статье объясняется, как подсчитать данные, возвращаемые запросом, в Access. Например, в форме или отчете можно подсчитать количество элементов в одном или нескольких полях таблицы или элементах управления. Вы также можете вычислять средние значения, находить наибольшее и наименьшее значения, самую давнюю и самую последнюю дату. Кроме того, в Access предусмотрено средство, называемое строкой итогов, с помощью которого можно подсчитывать данные в таблице, не изменяя структуру запроса.
Выберите нужное действие
- Способы подсчета данных
- Подсчет данных с помощью строки итогов
- Подсчет данных с помощью итогового запроса
- Справочные сведения об агрегатных функциях
Способы подсчета данных
Подсчитать количество элементов в поле (столбце значений) можно с помощью функции Число. Функция Число принадлежит к ряду функций, называемых агрегатными. Агрегатные функции выполняют вычисления со столбцами данных и возвращают единственное значение. Кроме функции Число, в Access есть следующие агрегатные функции:
- Сумма для суммирования столбцов чисел;
- Среднее для вычисления среднего значения в столбце чисел;
- Максимум для нахождения наибольшего значения в поле;
- Минимум для нахождения наименьшего значения в поле;
- Стандартное отклонение для оценки разброса значений относительно среднего значения;
- Дисперсия для вычисления статистической дисперсии всех значений в столбце.
В Access предусмотрено два способа добавления функции Count и других агрегатных функций в запрос. Вы можете:
- Открыть запрос в режиме таблицы и добавить строку итогов. Строка итогов позволяет использовать агрегатные функции в одном или нескольких столбцах в результатах запроса без необходимости изменять его структуру.
- Создать итоговый запрос. В итоговом запросе вычисляются промежуточные итоги по группам записей. Например, если вы хотите вычислить промежуточную сумму всех продаж по городам или по кварталам, следует использовать итоговый запрос для группировки записей по нужной категории, а затем просуммировать все объемы продаж. С другой стороны, с помощью строки итогов можно вычислить общий итог для одного или нескольких столбцов (полей) данных.
Примечание: Ниже в разделах этой статьи подробно описано применение функции Сумма, однако следует помнить, что вы можете использовать другие агрегатные функции в строках итогов и запросах. Дополнительные сведения об использовании других агрегатных функций см. ниже в разделе Справочные сведения об агрегатных функциях.
Дополнительные сведения о способах использования других агрегатных функций см. в разделе Отображение итогов по столбцу в таблице.
В следующих разделах описаны шаги, которые следует выполнить, чтобы добавить строку итогов, а также описывается использование итогового запроса для подсчета данных. Следует обратить внимание на то, что функция Число работает с большим числом типов данных, чем другие агрегатные функции. Функцию Число можно использовать для любого типа полей, кроме тех, которые содержат сложные повторяющиеся скалярные данные, например поле с многозначными списками.
С другой стороны, многие агрегатные функции работают только с данными в полях, имеющих определенный тип данных. Например, функция Сумма работает только с типами данных «Число», «Действительное» и «Денежный». Дополнительные сведения о типах данных, требуемых для каждой функции, см. ниже в разделе Справочные сведения об агрегатных функциях.
Общие сведения о типах данных см. в статье Изменение типа данных для поля.
Подсчет данных с помощью строки итогов
Чтобы добавить в запрос строку итогов, откройте его в режиме таблицы, добавьте строку, а затем выберите функцию Число или другую агрегатную функцию, например Сумма, Минимум, Максимум или Среднее. В этом разделе объясняется, как создать простой запрос на выборку и добавить строку итогов.
Создание простого запроса на выборку
- На вкладке Создание в группе Запросы нажмите кнопку Конструктор запросов.
- Дважды щелкните таблицу или таблицы, которые вы хотите использовать в запросе, а затем нажмите кнопку Закрыть. Выбранные таблицы отображаются в виде окон в верхней части конструктора запросов. На рисунке показана типичная таблица в конструкторе запросов.
- Дважды щелкните поля таблицы, которые вы хотите использовать в запросе. Вы можете включить поля, содержащие описательные данные, например имена и описания, но следует обязательно добавить поле, содержащее подсчитываемые значения. Каждое поле отображается в столбце в бланке запроса.
- На вкладке Конструктор запросов в группе Результаты нажмите кнопку Выполнить. Результаты запроса отображаются в режиме таблицы.
- При необходимости переключитесь в Конструктор и скорректируйте запрос. Для этого щелкните правой кнопкой мыши вкладку документа для запроса и выберите команду Конструктор. После этого можно изменить запрос, добавив или удалив поля таблицы. Чтобы удалить поле, выберите столбец в бланке запроса и нажмите клавишу DELETE.
- При необходимости вы можете сохранить запрос.
Добавление строки итогов
- Откройте запрос в режиме таблицы. Щелкните правой кнопкой мыши вкладку документа для запроса и выберите пункт Представление таблицы. -или- Дважды щелкните запрос в области навигации. Запрос будет выполнен, а его результаты будут загружены в таблицу.
- На вкладке Главная в группе Записи нажмите кнопку Итоги. Под последней строкой данных в таблице появится новая строка Итог.
- В строке Итог щелкните поле, по которому вы хотите выполнить подсчет, и выберите в списке функцию Count.
Скрытие строки итогов
- На вкладке Главная в группе Записи нажмите кнопку Итоги.
Дополнительные сведения об использовании строки итогов см. в разделе Отображение итогов по столбцу в таблице.
Подсчет данных с помощью итогового запроса
Когда нужно подсчитать некоторые или все записи, возвращаемые запросом, то вместо строки итогов можно воспользоваться итоговым запросом. Например, вы можете подсчитать общее число сделок или число сделок в отдельном городе.
Как правило, итоговый запрос применяется вместо строки итогов тогда, когда требуется использовать значение результата в другой части базы данных, например в отчете.
Подсчет всех записей в запросе
- На вкладке Создание в группе Запросы нажмите кнопку Конструктор запросов.
- Дважды щелкните таблицу, которую вы хотите использовать в запросе, и нажмите кнопку Закрыть. Таблица появится в окне в верхней части конструктора запросов.
- Дважды щелкните поля, которые вы хотите использовать в запросе, и убедитесь, что вы включили поле, которое нужно подсчитать. Можно подсчитать поля большинства типов данных, исключение — поля, содержащие сложные повторяющиеся скалярные данные, такие как поля многозначных списков.
- На вкладке Конструктор запросов в группе Показать и скрыть щелкните Итоги. В бланке появится строка Итог, а в строке для каждого поля запроса будет указано Группировка.
- В строке Итог щелкните поле, по которому вы хотите выполнить подсчет, и выберите в списке функцию Count.
- На вкладке Конструктор запросов в группе Результаты нажмите кнопку Выполнить. Результаты запроса отображаются в режиме таблицы.
- При необходимости вы можете сохранить запрос.
Подсчет записей в группе или категории
- На вкладке Создание в группе Запросы нажмите кнопку Конструктор запросов.
- Дважды щелкните таблицу или таблицы, которые вы хотите использовать в запросе, а затем нажмите кнопку Закрыть. Таблица (или таблицы) появится в окне в верхней части конструктора запросов.
- Дважды щелкните поле, содержащее данные категории, а также поле, значения в котором вы хотите подсчитать. Запрос не может содержать других описательных полей.
- На вкладке Конструктор запросов в группе Показать и скрыть щелкните Итоги. В бланке появится строка Итог, а в строке для каждого поля запроса будет указано Группировка.
- В строке Итог щелкните поле, по которому вы хотите выполнить подсчет, и выберите в списке функцию Count.
- На вкладке Конструктор запросов в группе Результаты нажмите кнопку Выполнить. Результаты запроса отображаются в режиме таблицы.
- При необходимости вы можете сохранить запрос.
Справочные сведения об агрегатных функциях
В следующей таблице перечислены и отписаны агрегатные функции Access, которые можно использовать в строке итогов и в запросах. Помните, что в Access предусмотрено больше агрегатных функций для запросов, чем для строки итогов.
Поддерживаемые типы данных
Суммирует элементы в столбце. Подходит только для числовых и денежных данных.
«Число», «Действительное», «Денежный»
Вычисляет среднее значение для столбца. Столбец должен содержать числовые или денежные величины или значения даты или времени. Функция игнорирует пустые значения.
«Число», «Действительное», «Денежный», «Дата/время»
Подсчитывает число элементов в столбце.
Все типы данных, за исключением сложных повторяющихся скалярных данных, таких как столбец многозначных списков.
Дополнительные сведения о многозначных списках см. в статье Создание или удаление многозначного поля.
Возвращает элемент, имеющий наибольшее значение. Для текстовых данных наибольшим будет последнее по алфавиту значение, причем Access не учитывает регистр. Функция игнорирует пустые значения.
«Число», «Действительное», «Денежный», «Дата/время»
Возвращает элемент, имеющий наименьшее значение. Для текстовых данных наименьшим будет первое по алфавиту значение, причем Access не учитывает регистр. Функция игнорирует пустые значения.
«Число», «Действительное», «Денежный», «Дата/время»
Стандартное отклонение
Показывает, насколько значения отклоняются от среднего.
Дополнительные сведения об этой функции см. в статье Отображение итогов по столбцу в таблице.
«Число», «Действительное», «Денежный»
Вычисляет статистическую дисперсию для всех значений в столбце. Подходит только для числовых и денежных данных. Если таблица содержит менее двух строк, Access возвращает пустое значение.
Дополнительные сведения о функциях для расчета дисперсии см. в разделе Отображение итогов по столбцу в таблице.
«Число», «Действительное», «Денежный»
Как вычислить среднее в БД MS access??
вот задание: Разработать фрагмент базы данных, содержащий оценки учащихся по предметам и вычислить средний балл учащихся. Осуществить выборку всех учащихся, средний балл которых попадает в заданный диапазон.
таблицу, выборку, запрос делать умею. но со средним не понятно: как именно его оформить, где вводить формулу? пыталась через запрос — не удается ввести формулу для среднего полей с предметами. нашла инфу как сделать в режиме сводной таблицы — ерунда какая-то получается. должно быть все проще, поясните плиз хотя бы в двух словах! куда ткнуть, что создать, как ввести формулу
Лучший ответ
Для этого надо сделать группировку.. . Я про 2003 офис не знаю. В 2007 это делается так:
создаём запрос в конструкторе, щелкаем по правой кнопке мыши и выбираем пункт контекстного меню «Итоги». (или на вкладке «конструктор»)
Потом добавляете 2 поля:
идентификатор ученика (групповая операция: группировка)
балл (групповая операция: avg)
Если в отчете, то надо в примечании отчета создать текстовое поле и туда прописать что-то типа:
=avg(имя_поля)
Если что — пишите в личку.
Без структуры БД трудно о чем-либо конкретном говорить.