![](/user_photo/2706_HbeT2.jpg)
- •32 Лабораторная работа №4 создание запросов средствами языка qbe
- •Теоретическая часть:
- •1. Понятие запроса. Виды запросов.
- •2. Знакомство с редактором запросов. Конструктор запросов.
- •3. Запросы на выборку
- •4. Запросы к связанным таблицам. Построение вычисляемых полей
- •5. Запросы с обобщением (с агрегированием)
- •6. Формирование сложных запросов. Использование представлений
- •Вариант 1 Поставка товаров
- •Вариант 2 Киносеанс
- •Вариант 3 Поликлиника
- •Вариант 4 Автосервис
- •Вариант 5 Предприятие
- •Вариант 6 Библиотека
- •Вариант 7 Сбор лекарственных трав аптекой
- •Вариант 8 Увлечения
- •Вариант 9 Красная книга животных
- •Вариант 10 Мировые ресурсы
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 ‑ Выполнение запроса