SQLсервер в Linux -самостоятельное освоение пакета

         

Использование агрегатных выражений



Листинг 5.19. Использование агрегатных выражений

booktown=# SELECT count(location) AS setjocations,

booktown-# count(ALL location) AS all_set_locations,

booktown-# count(DISTINCT location) AS unique_locations,

booktown-# count(*) AS all_rows booktown-# FROM subjects;

setjocations | all_set_locations | uniquejocations all_rows

15 15 | 7 16

(1 row)

У агрегатных выражений также имеется специальная форма, продемонстрированная в столбце al l_rows выходных данных листинга 5.19. Если при вызове агрегатной функции передается звездочка (*), это означает, что функция должна обрабатывать все поля, в том числе и обычно игнорируемые поля со значениями NULL. Поскольку таблица subjects содержит одну запись с полем location, равным NULL, результат подсчета записей по полю 1 ocati on отличается от результата подсчета по тому же нолю с использованием символа *.

ВНИМАНИЕ

Записи, у которых в агрегатное выражение входит NULL, не обрабатываются агрегатными функциями (исключением является функция count().

avg()

Синтаксис: avg(выражение)

Функция avg() получает агрегатное выражение, результат которого относится к любому из числовых типов (numeric, bigint, smallint, real или double precision) или к типу interval.

Функция возвращает среднее арифметическое всех данных, описываемых выражением. Возвращаемое значение относится к типу numeric для выражения типа integer или к типу double precision для выражения типа real. В остальных случаях тип возвращаемого значения совпадает с типом выражения.



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