Групповые операции

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

Группировка - понятие тонкое, но весьма важное и порою даже совершенно незаменимое. По умолчанию, в строке Групповые операции СУБД устанавливает в каждом столбце значение «Группировка», в соответствии с которым данные по каждому полю группируются, но результат не выводится. Если же нужен некий конкретный результат, то вместо «группировки» следует применить одну из девяти групповых функций (табл. 3.5).

Таблица 3.5. Функции, используемые в групповых операциях

Наимено­вание Назначение
SUM Вычисляет сумму всех значений заданного поля в каждой группе. Применяется только для числовых и денежных полей.
AVG Вычисляет среднее арифметическое всех значений данного поля в каждой группе. Применяется только для числовых и денежных полей.
MIN Возвращает наименьшее значение в рамках каждой группы. Применяется для любых полей, кроме логических и "мемо". В случае текстового содержания, возвращается наименьшее символьное значение независимо от регистра.
MAX Возвращает наибольшее значение в рамках каждой группы. Применяется для любых полей, кроме логических и "мемо". В случае текстового содержания, возвращается наибольшее символьное значение независимо от регистра.
COUNT Возвращает число записей, в которых значение данного поля отличается от Null. Хотя при использовании конструкции Count (*) можно подсчитать число всех записей, включая "нулевые".
STDEV Подсчитывает статистическое стандартное отклонение для всех значений данного поля в каждой группе. Функция применяется только для числовых и денежных полей. Если в группе менее двух записей, возвращается значение Null.
VAR Подсчитывает статистическую дисперсию для всех значений данного поля в каждой группе. Применяется только к числовым и денежным полям. Если в группе менее двух записей, возвращается значение Null.
FIRST Возвращает первое значение этого поля в группе.
LAST Возвращает последнее значение этого поля в группе.

Кроме стандартных, в Microsoft Access допустимы и два дополнительных варианта: "Выражение" и "Условие". Выбрав вариант "Выражение" в строке "Поле", можно задать конкретное выражение, например:

Max[(наименование поля)] - Min[(наименование поля)],

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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: