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

0 / 0 / 0

Регистрация: 28.04.2013

Сообщений: 18

1

Запрос.Найти средний балл у одного студента по всем предметам

25.05.2013, 16:53. Показов 46906. Ответов 19


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

На скрине видно таблица, в конце там есть столбик средний балл, вот там нужно найти средний балл. по всем предметом у одного студента.

Миниатюры

Запрос.Найти средний балл у одного студента по всем предметам
 



0



8749 / 5597 / 574

Регистрация: 27.03.2013

Сообщений: 19,035

25.05.2013, 17:08

2

acer31 — в таблицах вычисления не делаются, их надо производить в запросе или в свободном поле формы



0



0 / 0 / 0

Регистрация: 28.04.2013

Сообщений: 18

25.05.2013, 17:12

 [ТС]

3

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



0



8749 / 5597 / 574

Регистрация: 27.03.2013

Сообщений: 19,035

25.05.2013, 17:16

4

Если поля у вас называются как на вложении то так:

СрБалл:Avg([Русский]+[Татарский]+[Литература]+[Физика]+[Химия]+[Иностранный]+[Физра])



0



Эксперт MS Access

17224 / 7075 / 1583

Регистрация: 21.06.2012

Сообщений: 13,267

25.05.2013, 17:32

5

Вроде бы Avg — это агрегатная функция в запросах, вычисляющее среднее одного поля. Здесь же среднее нескольких полей одной записи СрБалл: ([Русский]+[Татарский]+[Литература]+[Физика]+[Химия]+[Иностранный]+[Физра])/7, или, если м.б. пустые поля, СрБалл: (Nz([Русский];0)+Nz([Татарский];0)+Nz([Литература];0)+Nz([Физика];0)+Nz([Химия];0)+Nz([Иностранный];0)+Nz(х[Физра];0))/7



1



mobile

Эксперт MS Access

26783 / 14462 / 3192

Регистрация: 28.04.2012

Сообщений: 15,782

25.05.2013, 17:35

6

acer31, если какой-либо предмет не сдан — нет оценки, то как считать? Пропускать его и выводить среднее по оставшимся? Или делить на общее количество предметов?
Вариант с учетом только сданных предметов

SQL
1
2
3
СрБалл:(nz([Русский],0)+nz([Татарский],0)+nz([Литература],0)+nz([Физика],0)+nz([Химия],0)+nz
([Иностранный],0)+nz([Физра],0))/(-([Русский] IS NOT NULL)-([Татарский] IS NOT NULL)-([Литература] IS NOT NULL)-
([Физика] IS NOT NULL)-([Химия] IS NOT NULL)-([Иностранный] IS NOT NULL) -([Физра] IS NOT NULL))

Вот такие формулы-мастодонты и возникают когда база не нормализована.

Аппаздал :-)



0



8749 / 5597 / 574

Регистрация: 27.03.2013

Сообщений: 19,035

25.05.2013, 17:45

7

Цитата
Сообщение от ltv_1953
Посмотреть сообщение

Вроде бы Avg — это агрегатная функция в запросах, вычисляющее среднее одного поля. Здесь же среднее нескольких полей одной записи СрБалл: …

, да, согласен, тупанул, поторопился . Сотню уж очень хотелось



0



0 / 0 / 0

Регистрация: 28.04.2013

Сообщений: 18

25.05.2013, 17:47

 [ТС]

8

пишет пропущен оператор в выражении запроса



0



Эксперт MS Access

17224 / 7075 / 1583

Регистрация: 21.06.2012

Сообщений: 13,267

25.05.2013, 17:57

9

Если м.б. пустые, то СрБалл:Nz([Русский];0)+Nz([Татарский];0)+Nz([Литература];0)+Nz([Физика];0)+Nz([Химия;0)+Nz([Иностранный];0)+Nz([Физра];0))/7



1



0 / 0 / 0

Регистрация: 28.04.2013

Сообщений: 18

25.05.2013, 18:04

 [ТС]

10

Вообщем все вот так:
Что делать?

Миниатюры

Запрос.Найти средний балл у одного студента по всем предметам
 



0



ltv_1953

Эксперт MS Access

17224 / 7075 / 1583

Регистрация: 21.06.2012

Сообщений: 13,267

25.05.2013, 18:17

11

А как Вам такой запрос удалось сделать? Еще раз — СрБалл — это вычислимое поле запроса, а сам запрос — такой

SQL
1
SELECT Nz([Русский],0)+Nz([Татарский],0)+Nz([Литература],0)+Nz([Физика],0)+Nz([Химия;0)+Nz([Иностранный],0)+Nz([Физра],;0))/7 AS СрБалл FROM [1 семестр]

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



0



0 / 0 / 0

Регистрация: 28.04.2013

Сообщений: 18

25.05.2013, 18:53

 [ТС]

12

Вообщем исправил, но астрономические цифры появляються, это явно не средний балл, да и в таблице не воявляються циферки.

Добавлено через 21 минуту
Столько программистов и не кто не знает как найти средний балл в Access?



0



Эксперт MS Access

17224 / 7075 / 1583

Регистрация: 21.06.2012

Сообщений: 13,267

25.05.2013, 19:15

13

Цитата
Сообщение от acer31
Посмотреть сообщение

да и в таблице не воявляються циферки.

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



0



8749 / 5597 / 574

Регистрация: 27.03.2013

Сообщений: 19,035

26.05.2013, 07:27

14

Думается — acer31 вставляет пример —

Цитата
Сообщение от ltv_1953
Посмотреть сообщение

СрБалл:Nz([Русский];0)+Nz([Татарский];0)+Nz([Литература];0)+Nz([Физика];0)+Nz([Химия;0)+Nz([Иностранный];0)+Nz([Физра];0))/7

в режиме SQL, а не в конструкторе.
acer31 — Вам для оказания помощи желательно выложить на форум архив своей БД.



1



0 / 0 / 0

Регистрация: 28.04.2013

Сообщений: 18

26.05.2013, 10:57

 [ТС]

15

Ок. Вот он.

Вложения

Тип файла: 7z db1.7z (22.6 Кб, 56 просмотров)



0



8749 / 5597 / 574

Регистрация: 27.03.2013

Сообщений: 19,035

26.05.2013, 15:08

16

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



1



8749 / 5597 / 574

Регистрация: 27.03.2013

Сообщений: 19,035

26.05.2013, 15:51

17

acer31 — Вообще то БД должна выглядеть как во вложении, а не как у вас по таблице на каждый семестр, посмотрите схему данных как там соединены таблицы и какие поля.
Успехов



1



8749 / 5597 / 574

Регистрация: 27.03.2013

Сообщений: 19,035

26.05.2013, 16:16

18

acer31 — Если Вам не нужно много знаков после запятой в вычисляемом поле то — в режиме конструктора откройте запрос — Успеваемость_Запрос и вставьте в 1 поле вот это —

СрБалл: Round((Nz([Русский];0)+Nz([Татарский];0)+Nz([Литература];0)+Nz([Физика];0)+Nz([Химия];0)+Nz([Иностранный];0)+Nz([Физра];0))/7;1)

Последняя цифра (в данном случае 1) указывает количество знакой после запятой, можно и 0.



1



0 / 0 / 0

Регистрация: 28.04.2013

Сообщений: 18

26.05.2013, 18:29

 [ТС]

19

Спасибо тебе большое, все отлично!



0



8749 / 5597 / 574

Регистрация: 27.03.2013

Сообщений: 19,035

26.05.2013, 18:31

20

acer31 — Удачи. Эксперементируйте. Это ОЧЕНЬ интересно!!!



0



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

РАБОТА 4. ФОРМИРОВАНИЕ
СЛОЖНЫХ ЗАПРОСОВ

I.
Запрос на выборку

Создать запрос Оценки студентов:

  • откройте вкладку Запросы
    и выполните команду Создать,
    Конструктор
    ; нажмите
    ОК;

  • в появившемся окне Добавление таблицы
    на вкладке Таблицы выберите таблицы
    Студенты, Предметы, Оценки, нажимая
    кнопку <Добавить>. Затем закройте
    окно Добавление таблицы.

  • Переместите в бланк запроса
    поля Номер группы,
    Фамилия, Имя, Отчество

    таблицы Студенты; поле Название
    дисциплины
    из таблицы
    Дисциплины; поле Оценки
    из таблицы Оценки;

  • в строке Сортировка
    в полях Номер группы и Фамилия установите
    по возрастанию;

  • выполните запрос, нажав

    или команда Запрос – Запуск. На экране
    появится таблица с данными об оценках
    студентов;

  • сохраните запрос под именем
    Оценки студентов
    и закройте таблицу запроса.

II.
Итоговый запрос

1. Создайте
запрос Средняя оценка
по запросу
Оценки студентов
, в
котором отображается средний балл
каждого студента.

      • Выполните команду Создать,
        Конструктор
        ; нажмите
        ОК;

      • Добавьте запрос Оценки
        студентов
        ;

      • В бланк запроса переместите
        поля Номер группы,
        Фамилия, Имя, Отчество, Оценки
        ;

      • Выберите команду Вид,
        Групповые операции или нажмите кнопку

        ;

      • В бланке запроса в строке Групповая
        операция
        в поле Оценки выберите
        функцию AVG (среднее);

      • В контекстном меню в поле Оценки
        бланка запроса выберите команду
        Свойства;

      • В окне Свойства
        в поле Формат поля
        установите С
        разделителями разрядов
        ,
        в поле Число десятичных
        знаков – 2;

      • Выполните запрос и
        сохраните его под названием Средняя
        оценка
        .

2. Создайте
запрос Стипендия,
рассчитывающий размер стипендии для
студентов, ее получающих.

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

      • Выполните команду Создать,
        Конструктор
        ; нажмите
        ОК;

  • Добавьте таблицы Студенты, Оценки.

  • Переместите в бланк запроса
    поля Номер группы,
    Фамилия, Имя, Отчество

    таблицы Студенты; Оценки
    из таблицы Оценки; Стипендия из таблицы
    Студенты;

  • в строке Условие
    отбора
    в поле Стипендия
    напишите Да;

  • Выберите команду Вид,
    Групповые операции или нажмите кнопку

    .

  • В бланке запроса в строке Групповая
    операция
    в поле Оценки выберите
    функцию AVG (среднее);
    В контекстном меню в поле
    Оценки бланка запроса выберите команду
    Свойства;

В окне Свойства
в поле Формат поля
установите С разделителями
разрядов
, в поле Число
десятичных знаков – 2.

  • Выполните запрос и сохраните
    его под названием Студенты,
    получающие стипендию
    .

Теперь можно создавать
запрос Стипендия:

      • Выполните команду Создать,
        Конструктор
        ; нажмите
        ОК;

  • Добавьте запрос Студенты,
    получающие стипендию;

  • Переместите в бланк запроса
    поля Номер группы,
    Фамилия, Имя, Отчество,
    AVG-Оценки;

  • в свободную колонку введите
    следующее выражение:

IIf([AVG-оценки]=5;900;IIf([AVG-оценки]>=4;600;0))

  • Выполните запрос и сохраните
    его под названием Стипендия.

Задания для самостоятельного
выполнения:

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

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

III.
Запрос с параметром

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

Для создания запроса с параметрами о
студентах заданной группы:

  • откройте вкладку Запросы
    и выполните команду Создать,
    Конструктор
    ; нажмите
    ОК;

  • выберите таблицу Студенты;

  • Переместите все поля таблицы Студенты
    в бланк запроса;

  • в строке Условие
    отбора
    для поля Номер
    группы введите фразу [Введите номер
    группы];

  • выполните запрос, в
    появившемся окне введите 151 и щелкните
    по кнопке ОК. На экране появится таблица
    с данными о студентах группы 151;

  • сохраните запрос под именем
    Студенты группы
    и закройте таблицу запроса.

Задания для самостоятельного
выполнения:

1) На основе запроса Оценки
студентов создайте запрос Оценки
студентов группы
с
2-мя параметрами, в котором выводятся
оценки студентов заданной группы по
заданной дисциплине.

2) На основе запроса Оценки
студентов создайте запрос с параметром
Поиск оценок студентов,
позволяющий найти оценки тех студентов,
фамилии которых начинаются на введенную
букву.

Чтобы
запросить у пользователя один или
несколько символов для поиска записей,
которые начинаются с этих символов,
создается запрос с параметром, содержащий
оператор LIKE
и подстановочный знак *. Например,
выражение

LIKE
[Введите первый символ для поиска:] &
*
выполняет
поиск слов, начинающихся с указанного
символа.

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

На основе запроса Оценки
студентов
создайте
перекрестный запрос Ведомость
успеваемости студентов
:

  • откройте вкладку Запросы
    и выполните команду Создать,
    Перекрестный запрос
    ;
    нажмите ОК;

  • нажмите на радио кнопку Запросы и
    выберите запрос Оценки
    студентов
    , нажмите
    кнопку Далее;

  • в список доступные поля переместите
    поля Номер группы, Фамилия, Имя
    (выбранные поля будут
    использованы в качестве заголовков
    строк);нажмите
    кнопку Далее;

  • в качестве заголовка столбцов выберите
    поле Название дисциплины; нажмите
    кнопку Далее;

  • На следующем шаге выберите поле Оценки,
    функция Среднее; нажмите
    кнопку Далее;

  • Введите имя запроса Ведомость
    успеваемости студентов
    ; нажмите
    кнопку Готово.

Задания для самостоятельного
выполнения:

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

V.
Запрос на создание таблицы

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

        • Выполните команду Создать,
          Конструктор
          ; нажмите
          ОК;

        • Добавьте таблицу Студенты,
          Оценки
          ;

  • В бланк запроса переместите
    поля Фамилия, Имя,
    Отчество, Номер группы, Оценки
    ;

        • Выберите команду Вид,
          Групповые операции или нажмите кнопку

          .

        • В бланке запроса в строке Групповая
          операция
          в поле Оценки выберите
          функцию SUM (сумма);

  • в строке Условие
    отбора
    поля Оценки
    введите 20 (отличниками будем считать
    тех студентов, которые за четыре экзамена
    набрали 20 баллов);

  • просмотрите создаваемую
    базу (команда Вид,
    Режим таблицы
    ),
    перейдите в режим конструктора и
    выполните команду Запрос,
    Создание таблицы
    ;

  • введите имя таблицы
    Студенты-отличники
    и щелкните по кнопке ОК;

  • выполните запрос, подтвердите создание
    таблицы и закройте (с сохранением)
    запрос;

  • откройте вкладку Таблицы,
    затем таблицу Студенты-отличники.
    Удостоверьтесь в правильности создания
    таблицы. Закройте таблицу.

Задание для самостоятельного
выполнения:
Создайте
запрос на создание базы данных двоечников
(двоечником считается студент, имеющий
по крайней мере одну двойку).

VI.
Запрос на обновление

Создайте запрос на изменение заработной
платы преподавателей. Преподавателям,
получающим менее 600 р. зарплата
увеличивается на 10%:

        • Выполните команду Создать,
          Конструктор
          ; нажмите
          ОК;

        • Добавьте таблицу
          Преподаватели;

  • В бланк запроса переместите
    поле Зарплата;

  • Выполните команду Запрос,
    Обновление
    ;

  • в строке Условие
    отбора
    введите <600;

  • в строке Обновление
    введите [Зарплата]*1,1;

  • выполните запрос, подтвердив готовность
    на обновление данных;

  • закройте запрос, сохранив
    его под именем Изменение зарплаты;

  • откройте форму Преподаватели,
    просмотрите изменение заработной платы
    у преподавателей, получающих меньше
    600 р., и закройте форму.

Задания для самостоятельного
выполнения:

1) Создайте запрос на
обновление имени Наталия
на имя Наталья в
таблице Студенты.

2) Создайте запрос Исправление
троек группы 152 на четверки
.

VI.
Запрос на удаление

Создайте запрос на удаление отчисленных
студентов.

Для создания запроса на отчисление
студента гр. 152 Петрова Кирилла Николаевича:

        • Выполните команду Создать,
          Конструктор
          ; нажмите
          ОК;

        • Добавьте таблицу Студенты;

  • В бланк запроса переместите
    поля Фамилия, Имя,
    Отчество, Номер группы;

  • Выполните команду Запрос,
    Удаление;

  • В строке Условие
    отбора
    введите: в
    поле Фамилия — Петров, в поле Имя — Кирилл,
    в поле Отчество — Николаевич, в поле
    Номер группы — 152;

  • просмотрите удаляемую
    запись (команда Вид,
    Режим таблицы
    ),
    перейдите в режим конструктора;

  • выполните запрос, подтвердите
    удаление и закройте запрос, сохранив
    под именем Отчисленные студенты;

  • откройте форму Студенты. Удостоверьтесь
    в удалении записи о студенте Петрове
    и закройте форму.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

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

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

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

← Назад в раздел

01:51

 (Голосов: 2, Рейтинг: 5)

Ссылка:

Код:

  • Карепрост (Careprost) — средство для роста ресниц карепрост купить по низкой цене с доставкой.

    careprost-shop.ru

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

  1. В окне базы данных щелкните на кнопке Запросы.
  2. Дважды щелкните на значке Создание запроса в режиме конструктора (Create Query In Design View).
  3. В открывшемся окне диалога (рис. 17.6) выделите строку Контакты.
  4. 4. Щелчком на кнопке Добавить добавьте выбранную таблицу в верхнюю область конструктора запроса.
  5. 5. Выделите пункт Список и снова щелкните на кнопке Добавить.
  6. 6. Щелчком на кнопке Закрыть закройте окно диалога Добавление таблицы (Show Table). Списки полей двух таблиц, соединенные линией связи, появятся в окне конструктора.
  7. 7. Щелкните на кнопке Групповые операции (Totals) панели инструментов. В бланке запроса появится дополнительная строка Групповая операция: (Total), позволяющая выполнять статистические операции со значениями конкретных полей.

Рис. 17.6. Добавление таблицы

  1. Перетащите поле Фамилия в ячейку Поле (Field) первого столбца конструктора.
  2. В ту же ячейку второго столбца перетащите поле Имя таблицы Контакты.
  3. В третий, четвертый и пятый столбцы бланка запроса перетащите поле Дата таблицы Список (рис. 17.7).

Рис. 17.7. Запрос с групповыми операциями

  1. В раскрывающемся списке ячейки Групповая операция (Total) третьего столб ца бланка запроса выберите пункт Min.
  2. В той же ячейке четвертого столбца выберите пункт Мах.
  3. В пятом столбце задайте групповую операцию Count. Групповые операции построенного запроса обработают все записи таблицы Список, соответствующие конкретному человеку из таблицы Контакты, и вместо самих данных таблицы Список выведут в соответствующее поле результата запроса только значение величины, вычисляемой по определенной формуле. Доступные групповые операции перечислены в табл. 17.1.
Название Функция
Условие(Where) Режим задания условия отбора для поля, но которому не выполняется группировка. Access автоматически делает такое поле скрытым
Выражение (Expression) Вычисляемое поле, значение которого рассчитывается по сложной формуле
Group By Поле, определяющее группу записей, по которой вычисляются статистические параметры. К одной группе относятся все записи, для которых значения поля с режимом Group By (Группировка) одинаковы
Last Последнее значение в группе
First Первое значение в группе
Var Вариация значений поля
StDev Стандартное отклонение величин ноля от среднего
Count Количество записей, соответствующее ноле которых не содержит величины Null
Мах Максимальное значение
Min Минимальное значение
Avg Среднее значение поля
Sum Сумма значений поля по всем записям

ТАБЛИЦА 17.1 . Групповые операции

Примечание

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

  1. Щелкните на кнопке Вид, чтобы выполнить запрос. Появится таблица с пятью столбцами. Два первых столбца содержат фамилии и имена людей. По ним выполняется группировка, то есть расчет значений остальных полей запроса выполняется для записей таблицы Список, сопоставляемых с одним человеком. Как уже говорилось выше, соответствие контакта таблицы Список и человека из таблицы Контакты определяется полями Код_Контакты, с помощью которых осуществляется связь этих двух таблиц. Третий и четвертый столбцы запроса выводят соответственно дату первого (функция Min) и последнего (функция Мах) контакта с данным человеком. Пятый столбец содержит количество записей в таблице Список (функция Count), соответствующих. данному человеку, то есть число контактов с ним. Единственный недостаток построенного запроса — это непонятные имена столбцов. Давайте скорректируем их.
  2. Щелчком на кнопке Вид вернитесь в конструктор запроса.
  3. В ячейке Поле третьего столбца замените имя Дата на текст Дата первого контакта: Дата. Правая часть этого выражения, расположенная правее двоеточия, по-прежнему задает имя поля, а левая определяет название столбца результата запроса. Таким образом, любому столбцу запроса можно назначить произвольное имя.
  4. В ячейке Поле четвертого столбца введите Дата последнего контакта: Дата.
  5. В первой строке пятого столбца бланка’запроса введите Число контактов: Дата.

Примечание

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

  1. Снова щелкните на кнопке Вид.
  2. Закройте запрос.
  3. Для сохранения изменений структуры щелкните на кнопке Да.
  4. В окне диалога Сохранение (Save As) введите имя Итоговый запрос и щелкните на кнопке ОК.

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

  1. В окне базы данных щелкните на кнопке Запросы.
  2. Дважды щелкните на значке Создание запроса в режиме конструктора (Create Query In Design View).
  3. В открывшемся окне диалога (рис. 17.6) выделите строку Контакты.
  4. 4. Щелчком на кнопке Добавить добавьте выбранную таблицу в верхнюю область конструктора запроса.
  5. 5. Выделите пункт Список и снова щелкните на кнопке Добавить.
  6. 6. Щелчком на кнопке Закрыть закройте окно диалога Добавление таблицы (Show Table). Списки полей двух таблиц, соединенные линией связи, появятся в окне конструктора.
  7. 7. Щелкните на кнопке Групповые операции (Totals) панели инструментов. В бланке запроса появится дополнительная строка Групповая операция: (Total), позволяющая выполнять статистические операции со значениями конкретных полей.

Рис. 17.6. Добавление таблицы

  1. Перетащите поле Фамилия в ячейку Поле (Field) первого столбца конструктора.
  2. В ту же ячейку второго столбца перетащите поле Имя таблицы Контакты.
  3. В третий, четвертый и пятый столбцы бланка запроса перетащите поле Дата таблицы Список (рис. 17.7).

Рис. 17.7. Запрос с групповыми операциями

  1. В раскрывающемся списке ячейки Групповая операция (Total) третьего столб ца бланка запроса выберите пункт Min.
  2. В той же ячейке четвертого столбца выберите пункт Мах.
  3. В пятом столбце задайте групповую операцию Count. Групповые операции построенного запроса обработают все записи таблицы Список, соответствующие конкретному человеку из таблицы Контакты, и вместо самих данных таблицы Список выведут в соответствующее поле результата запроса только значение величины, вычисляемой по определенной формуле. Доступные групповые операции перечислены в табл. 17.1.
Название Функция
Условие(Where) Режим задания условия отбора для поля, но которому не выполняется группировка. Access автоматически делает такое поле скрытым
Выражение (Expression) Вычисляемое поле, значение которого рассчитывается по сложной формуле
Group By Поле, определяющее группу записей, по которой вычисляются статистические параметры. К одной группе относятся все записи, для которых значения поля с режимом Group By (Группировка) одинаковы
Last Последнее значение в группе
First Первое значение в группе
Var Вариация значений поля
StDev Стандартное отклонение величин ноля от среднего
Count Количество записей, соответствующее ноле которых не содержит величины Null
Мах Максимальное значение
Min Минимальное значение
Avg Среднее значение поля
Sum Сумма значений поля по всем записям

ТАБЛИЦА 17.1 . Групповые операции

Примечание

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

  1. Щелкните на кнопке Вид, чтобы выполнить запрос. Появится таблица с пятью столбцами. Два первых столбца содержат фамилии и имена людей. По ним выполняется группировка, то есть расчет значений остальных полей запроса выполняется для записей таблицы Список, сопоставляемых с одним человеком. Как уже говорилось выше, соответствие контакта таблицы Список и человека из таблицы Контакты определяется полями Код_Контакты, с помощью которых осуществляется связь этих двух таблиц. Третий и четвертый столбцы запроса выводят соответственно дату первого (функция Min) и последнего (функция Мах) контакта с данным человеком. Пятый столбец содержит количество записей в таблице Список (функция Count), соответствующих. данному человеку, то есть число контактов с ним. Единственный недостаток построенного запроса — это непонятные имена столбцов. Давайте скорректируем их.
  2. Щелчком на кнопке Вид вернитесь в конструктор запроса.
  3. В ячейке Поле третьего столбца замените имя Дата на текст Дата первого контакта: Дата. Правая часть этого выражения, расположенная правее двоеточия, по-прежнему задает имя поля, а левая определяет название столбца результата запроса. Таким образом, любому столбцу запроса можно назначить произвольное имя.
  4. В ячейке Поле четвертого столбца введите Дата последнего контакта: Дата.
  5. В первой строке пятого столбца бланка’запроса введите Число контактов: Дата.

Примечание

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

  1. Снова щелкните на кнопке Вид.
  2. Закройте запрос.
  3. Для сохранения изменений структуры щелкните на кнопке Да.
  4. В окне диалога Сохранение (Save As) введите имя Итоговый запрос и щелкните на кнопке ОК.

Понравилась статья? Поделить с друзьями:

Не пропустите также:

  • Как найти общую выручку по издержкам
  • Ассасин крид вальгалла наковальня как найти
  • Как найти драйвер в реестре
  • Как по изображению найти оригинал в интернете
  • Как составить днф по карте карно

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии