Технология Microsoft ADO.NET

       

Агрегатные функции


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

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

Для определения общего числа записей в таблице Products используем запрос

select count (*) from Products;

результатом которого будет следующее (рис. 1.42):


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

Обратите внимание: на вкладке "Messages" возникает сообщение, что только одна запись извлечена:

(1 row(s) affected)

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

Для определения количества записей поля ProductName таблицы Products используем следующий запрос:

select count (ProductName) from Products;

Таблица Products имеет все заполненные значения полей, поэтому результат этого запроса будет совпадать с результатом извлечения всех записей.

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

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

Вы можете самостоятельно попробовать определить, содержатся ли в какой-либо таблице базы данных Northwind поля, имеющие значения

select *( или название столбца(ов)) from название_таблицы where название столбца is null;

Для обратной задачи - используем запрос типа

select *( или название столбца(ов)) from название_таблицы where название столбца is not null;

Оператор count учитывает записи со значением поля null.

Синтаксис использования других операторов одинаков - следующие запросы извлекают сумму, арифметическое среднее, наибольшее и наименьшее значения поля UnitPrice таблицы Products:

select sum(UnitPrice) from Products; select avg(UnitPrice) from Products; select max(UnitPrice) from Products; select min(UnitPrice) from Products;

Выполните самостоятельно эти запросы и просмотрите результаты.



Содержание раздела