Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
DB-Lab4-QBE в SQLServer.doc
Скачиваний:
40
Добавлен:
15.04.2015
Размер:
956.93 Кб
Скачать

5. Запросы с обобщением (с агрегированием)

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

Перечислим наиболее используемые агрегатные функции:

  • SUM – вычисляет сумму всех значений поля;

  • AVG – возвращает среднее арифметическое значений поля;

  • MIN – определяет минимальное значение поля;

  • MAX – определяет максимальное значение поля;

  • COUNT – выполняет подсчет количества значений, не равных NULL;

  • FIRST – возвращает первое значение поля;

  • LAST – возвращает последнее значение поля.

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

Рисунок 21 – Добавление поля группировки

Пример 7:Вывести суммарное количество товаров, поставляемых каждым поставщиком.

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

В конструкторе запросов открыть таблицу Поставка и выбрать столбцы Поставщик и Объем. Добавить поле группировки. Обратите внимание, что в появившемся поле GroupByавтоматически добавляется группировка для всех столбцов, указанных в области сетки (рисунок 22). Вместе с этим в области диаграммы рядом со столбцами Поставщик и Объем появился значок.

Рисунок 22 ‑ Добавление поля группировки

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

Рисунок 23 – Разбиение на группы

Для реализации запроса следует просуммировать объемы поставок товаров по каждой отдельной группе. Это можно сделать, применив агрегатную функцию Sumк данным в столбце Объем. В результате СУБД вернет единственное значение для каждой группы. В полеGroup Byдля столбца Объем выбираем агрегатную функциюSumв выпадающем списке, как показано на рисунке 24. Следует обратить внимание, что в области диаграммы столбец Объем помечается значком.

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

Рисунок 24 – Выбор агрегатной функции

Результат выполнения запроса представлен на рисунке 25.

Рисунок 25 – Выполнение запроса

Иногда требуется применение агрегатной функции ко всем данным столбца. Тогда вся таблица считается отдельной группой и агрегатная функция возвращает единственное значение для всей таблицы.

Пример 8:Вывести минимальную цену товара.

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

В конструкторе запросов открыть таблицу Товар и выбрать столбец Цена.

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

Результат выполнения запроса представлен на рисунке 26.

Рисунок 26 ‑ Выполнение запроса

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