Использование агрегатных функций
Важной функцией любой информационной системы является автоматическое формирование отчетности на основе данных, хранящихся в БД. Во многих отчетах требуется отображать не сами данные (их слишком много), а результаты их статистической обработки, например, суммарные или средние значения по различным показателям. Выполнять статистическую обработку данных в клиентских приложениях неэффективно, поскольку при этом придется пересылать по сети большое количество необработанной информации с сервера. Более разумным решением является обеспечение возможности выполнять статистическую обработку данных непосредственно на сервере. С этой целью в команду 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, могут быть только агрегатные функции (или выражения на основе агрегатных функций).
Читайте также: II. Использование галереи фильтров Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|