PostgreSQL функция count

В этом учебном пособии вы узнаете, как использовать PostgreSQL функцию count с синтаксисом и примерами.

Описание

Функция count PostgreSQL возвращает количество выражений.

Синтаксис

Синтаксис функции count в PostgreSQL:

SELECT count(aggregate_expression)
FROM tables
[WHERE conditions];

Или синтаксис функции count при группировке результатов по одному или нескольким столбцам:

SELECT expression1, expression2,... expression_n,
count(aggregate_expression)
FROM tables
[WHERE conditions]
GROUP BY expression1, expression2,... expression_n;

Параметры или аргументы

expression1, expression2,... expression_n
Выражения, которые не заключены в функцию count и должны быть включены в оператор GROUP BY в конце SQL-запроса.
aggregate_expression
Это столбец или выражение, чьи ненулевые значения будут учитываться.
tables
Таблицы, из которых вы хотите получить записи. В операторе FROM должна быть указана хотя бы одна таблица.
WHERE conditions
Необязательный. Это условия, которые должны быть соблюдены для выбора записей.

Включает только значения NOT NULL

Не все это понимают, но функция count будет включать в счет только записи, в которых значение expression в count(expression) равно NOT NULL. Когда expression содержит значение NULL, оно не включается в вычисления count.
Рассмотрим пример функции count, который демонстрирует, как значения NULL оцениваются функцией count.
Например, если у вас есть следующая таблица с именем suppliers:

supplier_id supplier_name state
1 IBM CA
2 Microsoft
3 NVIDIA

И если вы запустили следующий оператор SELECT, которая использует функцию count:

Этот пример count вернет 3, так как все значения supplier_id в результирующем наборе запроса не равны NULL
Однако, если вы запустили следующий оператор SELECT, которая использует функцию count:

В этом примере count будет возвращать только 1, поскольку только одно значение state в результирующем наборе запроса NOT NULL. Это будет первая строка, где state = 'CA'. Это единственная строка, которая включена в расчет функции count.

Применение

Функция count может использоваться в следующих версиях PostgreSQL:

  • PostgreSQL 11, PostgreSQL 10, PostgreSQL 9.6, PostgreSQL 9.5, PostgreSQL 9.4, PostgreSQL 9.3, PostgreSQL 9.2, PostgreSQL 9.1, PostgreSQL 9.0, PostgreSQL 8.4

Пример - с одним выражением

Рассмотрим некоторые примеры функций count, чтобы понять, как использовать функцию count в PostgreSQL.
Например, вам может потребоваться узнать количество записей из таблицы products, которые имеют product_type 'Hardware'

В этом примере функции count мы назвали выражение count(*) как "Number of products". В результате, "Number of products" будет отображаться как имя поля при возвращении набора результатов.

Пример - использование DISTINCT

Вы можете использовать оператор DISTINCT в функции count. Например, приведенный ниже оператор SQL возвращает количество уникальных department (отделов), в которых хотя бы один сотрудник зарабатывает более 35000 $ в год.

Опять же, поле count(DISTINCT department) имеет псевдоним "Unique departments". Это имя поля, которое будет отображаться в результирующем наборе.

Пример - использование GROUP BY

В некоторых случаях вам потребуется использовать оператор GROUP BY с функцией count.
Например, вы также можете использовать функцию count, чтобы вернуть записи с department (название отдела) и "Number of employees" (количество сотрудников в соответствующем отделе), зарплата которых, составляют более 40000 $ США в год.

Поскольку в вашем операторе SELECT указан один столбец, который не инкапсулирован в функции count, необходимо использовать оператор GROUP BY. Поэтому поле department должно быть указано в операторе GROUP BY.