В этом учебном пособии вы узнаете, как использовать PostgreSQL функцию count с синтаксисом и примерами.
Описание
Функция count PostgreSQL возвращает количество выражений.
Синтаксис
Синтаксис функции count в PostgreSQL:
FROM tables
[WHERE conditions];
Или синтаксис функции count при группировке результатов по одному или нескольким столбцам:
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:
1 2 3 4 |
SELECT count(supplier_id) FROM suppliers; --Результат: 3 |
Этот пример count вернет 3, так как все значения supplier_id в результирующем наборе запроса не равны NULL
Однако, если вы запустили следующий оператор SELECT, которая использует функцию count:
1 2 3 4 |
SELECT count(state) FROM suppliers; --Результат: 1 |
В этом примере 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'
1 2 3 |
SELECT count(*) AS "Number of products" FROM products WHERE product_type = 'Hardware'; |
В этом примере функции count мы назвали выражение count(*) как "Number of products". В результате, "Number of products" будет отображаться как имя поля при возвращении набора результатов.
Пример - использование DISTINCT
Вы можете использовать оператор DISTINCT в функции count. Например, приведенный ниже оператор SQL возвращает количество уникальных department (отделов), в которых хотя бы один сотрудник зарабатывает более 35000 $ в год.
1 2 3 |
SELECT count(DISTINCT department) AS "Unique departments" FROM employees WHERE salary > 35000; |
Опять же, поле count(DISTINCT department) имеет псевдоним "Unique departments". Это имя поля, которое будет отображаться в результирующем наборе.
Пример - использование GROUP BY
В некоторых случаях вам потребуется использовать оператор GROUP BY с функцией count.
Например, вы также можете использовать функцию count, чтобы вернуть записи с department (название отдела) и "Number of employees" (количество сотрудников в соответствующем отделе), зарплата которых, составляют более 40000 $ США в год.
1 2 3 4 |
SELECT department, count(*) AS "Number of employees" FROM employees WHERE salary > 40000 GROUP BY department; |
Поскольку в вашем операторе SELECT указан один столбец, который не инкапсулирован в функции count, необходимо использовать оператор GROUP BY. Поэтому поле department должно быть указано в операторе GROUP BY.