Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
К лабораторной работе 3.doc
Скачиваний:
5
Добавлен:
14.11.2018
Размер:
7.09 Mб
Скачать

2.2. Агрегирующие функции языка sql

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

Агрегирующие функции производят вычисление одного «собирающего» значения (суммы, среднего, максимального, минимального значения и т. п.) для заданных групп строк таблицы. Группы строк определяются различными зна- чениями заданного поля (полей) таблицы. Разбиение на группы выполняется с помощью предложения group by.

Рассмотрим перечень агрегирующих функций.

• count определяет количество записей данного поля в группе строк.

• sum вычисляет арифметическую сумму всех выбранных значений данного поля.

• avg рассчитывает арифметическое среднее (усреднение) всех выбранных значений данного поля.

• max находит наибольшее из всех выбранных значений данного поля.

• min находит наименьшее из всех выбранных значений данного поля.

Для определения общего числа запи- сей в таблице Туристы используем запрос select count (*) from Туристы;

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

ставлен на рисунке 34.

Отметим, что результатом запроса яв- ляется одно число, содержащееся в поле с отсутствующим именем.

Рис. 34. Результат запроса с функцией count

А если мы захотим посчитать однофамильцев (то есть разбить набор за- писей-результатов запроса на группы с одинаковыми фамилиями), то запрос будет выглядеть так:

select Фамилия, count (Фамилия) from Туристы group by Фамилия;

Синтаксис использования других операторов одинаков – следующие за- просы извлекают сумму, арифметическое среднее, наибольшее и наименьшее значения поля «Цена» таблицы «Туры» (здесь заданной группой записей, как и в первом примере с функцией count, являются все записи таблицы).

select sum(Цена) from Туры select avg(Цена) from Туры select max(Цена) from Туры select min(Цена) from Туры

Если значение поля может быть незаполненным, то для обращения к та- ким полям необходимо использовать оператор null. Отметим, что величина null не означает, что в поле стоит число 0 (нуль) или пустая текстовая строка. Су- ществует два способа образования таких значений:

1) Microsoft SQL Server автоматически подставляет значение null, если в зна- чение поля не было введено никаких значений и тип данных для этого поля не препятствует присвоению значения null;

2) или если пользователь явным образом вводит значение null.

2.3. Оператор сравнения записей like

Оператор сравнения like нужен для поиска записей по заданному шабло- ну. Эта задача является одной из наиболее часто встречаемых задач – например, поиск клиента с известной фамилией в базе данных.

Рис. 35. Запрос с оператором like

Предположим, что в таблице «Тури-

сты», содержащей поля «Фамилия», «Имя» и

«Отчество», требуется найти записи клиентов с фамилиями, начинающимися на букву «И». select Фамилия, Имя, Отчество from Туристы where Фамилия Like 'И%'

Результатом этого запроса будет таблица, представленная на рисунке 35.

Оператор like содержит шаблоны, позволяющие получать различные ре-

зультаты (таблица 7).

Таблица 7

Шаблоны оператора like

Шаблон

Значение

like '5[%]'

5%

like '[_]n'

_n

like '[a–cdf]'

a, b, c, d, или f

like '[–acdf]'

–, a, c, d, или f

like '[ [ ]'

[

like ']'

]

like 'abc[_]d%'

abc_d и abc_de

like 'abc[def]'

abcd, abce, и abcf

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