Классика баз данных - статьи

       

Example имеются шесть встроенных фунций:


В языке Query-by- Example имеются шесть встроенных фунций: CNT. (count), SUM., AVG. (average), MAX. (maximum), MIN. (minimum) и UN. (unique). Функция UN. может быть присоединена к функциям CNT., SUM. или AVG.. Например, CNT. UN. означает, что число только различных значений. Следующие примеры иллюстрируют применение этих функций.

Выборка с использованием встроенных функций и оператора ALL.. Подсчитать общее число служащих. Этот запрос показан на рис. 27. Выражение ALL.JONES представляет собой мультимножество (множество, содержащее дубликаты) всех имен в таблице EMP, и функция CNT. осуществляет подсчет числа элементов этого множества. Здесь снова можно использовать конструкцию P.CNT.ALL., опуская элемент примера JONES.



Рис. 27. Использование функции CNT, см.

Подсчитать общее количество отделов в таблице SALES. Этот запрос проиллюстрирован на рис. 28. Поскольку в столбце DEPT существуют дубликаты отделов (столбец DEPT не является ключом), для удаления дубликатов присоединяется функция UN.. Функция ALL. не удаляет дубликаты автоматически, так как она порождает мультимножество. Заметим, что в случае использования конструкции P.ALL.TOY будет получен список всех отделов с их дубликатами.



Рис. 28. Использование функций CNT. и UN., см.

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

Вывести сумму зарплат в отделе игрушек. Этот запрос показан на рис. 29. Конструкция ALL.S1 порождает мультимножество всех зарплат, соответствующих TOY, т.е. мультимножество всех зарплат отдела игрушек. Таким образом, если зарплата каждого из пятидесяти служащих составляет $12000, при суммировании эта сумма будет учтена пятьдесят раз.



Рис. 29. Ограниченная выборка с использованием встроенных функций, см.

Выборка с группированием. Для каждого отдела вывести его название и сумму зарплат всех служащих. Этот запрос показан на рис. 30. Группирование задается путем двойного подчеркивания TOY для явного указания оператора group-by. Этот запрос может быть перефразирован следующим образом: для каждого отдела TOY (например) просуммировать зарплаты всех его сотрудников.


Содержание  Назад  Вперед