Создание Windows-приложений на основе Visual C#

         

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


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

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

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

select count (*) from Products;

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


Рис. 4.14.  Результат запроса с функцией 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;

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



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