Операция подведения итогов
Операция подведения итоговSUMMARIZE выполняет «вертикальные» или групповые вычисления и имеет следующий формат:
SUMMARIZE <исх. отн.> BY (<список атрйбутов>) ADD <выр.> AS
<новый атрибут>,
где <исх. отн.> - исходное отношение, которое задается именем отношения либо заключенным в круглые скобки выражением реляционной алгебры,
< список атрибутов > - разделенные запятыми имена атрибутов исходного отношения A1, A2,..., AN,
< выр. > - скалярное выражение, аналогичное выражению операции EXTEND,
< новый атрибут > — имя формируемого атрибута.
В списке атрибутов и в выражении не должен использоваться
< новый атрибут >.
Результатом операции SUMMARIZE является отношение R с заголовком, состоящим из атрибутов списка, расширенного новым атрибутом. Для получения тела отношения R сначала выполняется проецирование (назовем проекцию R1) исходного отношения на атрибуты A1, A2,..., AN, после чего каждый кортеж проекции расширяется новым (N + 1)-м атрибутом. Поскольку проецирование, как правило, приводит к сокращению количества кортежей по отношению к исходному отношению (удаляются одинаковые кортежи), то можно считать, что происходит своеобразное группирование кортежей исходного отношения: одному кортежу отношения R1 соответствует один или более (если было дублирование при проецировании) кортежей исходного отношения. Значение (N + 1)-гo атрибута каждого кортежа отношения R формируется путем вычисления выражения над соответствующей этому кортежу группой кортежей исходного отношения.
Операция множественного подведения итогов, подобно соответствующим операциям переименования и расширения, выполняет одновременно несколько «вертикальных» вычислений и записывает результаты в отдельные новые атрибуты. Простейшим примером такой операции может служить следующая запись:
Языки запросов позволяют вычислять групповые функции (по группе выделенных строк) с помощью функций:
Avg — среднее арифметическое значение поля;
Count — число выбранных записей;
Max — максимальное значение поля;
Min — минимальное значение поля;
Sum — сумма значений поля.
Для использования подобных функций указываются поля, образующие группу записей.
Задание 14.
Пусть требуется вывести названия групп и количество студентов в них. Этот запрос можно разделить на две операции: сгруппировать студентов по группам и подсчитать число студентов в каждой из групп.
На языке реляционной алгебры:
SUMMARIZE Студент BY (Группа) ADD COUNT(Номер_студ) AS Кол_студ
На языке QBE. Запрос на выборку с групповыми операциями:
Запрос_14
Поле | Группа | Кол_студ: Номер_студ |
Имя таблицы | Студент | Студент |
Групповая операция | Группировка | Count |
Вывод на экран | ü | ü |
Условие отбора |
Чтобы задать групповые операции необходимо выполнить:
В окне базы данных:
Ø выбрать объект Запросы,
Ø открыть окно Конструктора запросов и добавить таблицу Преподаватель –
Создать \ Конструктор \ добавить таблицу Преподаватель \ОК
Ø включить в запрос групповые операции - Вид \ Групповые операции
Группировка – означает группирование записей по значениям данного поля. Определяет группы, для которых выполняются вычисления. Например, чтобы показать суммарные продажи по типам товаров, выберите элемент Группировка для поля «Тип».
Условие – означает задание условия при выполнении групповой операции. Определяет условия отбора для поля, которое не участвует в группировке. Если для поля выбирается этот параметр, автоматически снимается флажок Вывод на экран, и поле не выводится на экран при выполнении запроса.
Выражение - создает вычисляемое поле с помощью статистической функции, включенной в выражение. Обычно вычисляемое поле создается, если требуется включить в выражение несколько функций.
На языке SQL: