Использование агрегатных функций

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

С этой целью в команду SELECT введены агрегатные (статистические, итоговые) функции. Основная особенность этих функций состоит в том, что каждая из них вычисляет одно итоговое значение по какому-либо столбцу (это может быть и вычисляемый столбец) для множества строк таблицы.

В стандарте определено 5 агрегатных функций:

sum(имя_столбца) – сумма значений заданного столбца,

avg(имя_столбца) – среднее значение

min(имя_столбца), max(имя_столбца)– минимальное и максимальное значение

count([DISTINCT] * или имя_столбца) – подсчет количества строк.

Первые две функции (сумма и среднее) могут быть вычислены только по числовым столбцам, максимальное и минимальное значения могут быть определены для столбцов всех типов (кроме больших объектов), при этом строки текста сравниваются в лексикографическом, а даты – в хронологическом порядке.

Например:

Подсчитать средний балл по всем студентам и предметам

select avg (mark) avg_mark from marks

Найти минимальную и максимальную даты рождения студентов

select MIN(born) min_date, MAX(born) max_date from students

Функция COUNT, казалось бы, вообще не должна содержать аргументов, поскольку ее назначение – подсчет количества строк, что она и делает, если в качестве аргумента используется символ-заменитель *. Однако, если в качестве аргумента использовать имя столбца, данная функция будет подсчитывать количество непустых значений в данном столбце. Второй вариант аргумента разумно использовать, только если столбец не имеет ограничения NOT NULL. Использование ключевого слова DISTINCT приводит к тому, что подсчитывается количество уникальных значений в заданном столбце.

Например:

Посчитать количество студентов (количество строк в таблице students)

select count (*) count_students from students

Подсчитать количество студентов, для которых известен номер их телефона.

select count (phone) count_phones from students

Подсчитать количество уникальных значений оценок в таблице marks:

select count (DISTINCT mark) count_marks from marks

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








Дата добавления: 2015-08-26; просмотров: 848;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.