SQL Server функция COUNT

В этом учебном пособии вы узнаете, как использовать функцию COUNT в SQL Server (Transact-SQL) с синтаксисом и примерами.

Описание

В SQL Server (Transact-SQL) функция COUNT возвращает количество строк поля или выражения в результирующий набор.

Синтаксис

Синтаксис функции COUNT в SQL Server (Transact-SQL):

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 - это столбец или выражение, чьи не NULL значения будут подсчитаны.
tables - таблицы, из которых вы хотите получить записи. Должна быть хотя бы одна таблица, перечисленная в операторе FROM.
WHERE conditions - необязательный. Это условия, которые должны выполняться для выбранных записей.

Включение не NULL значений

Не все это понимают, но функция COUNT будет считать только те записи, где значение выражения в COUNT (aggregate_expression) не равно NULL. Когда выражение содержит значение NULL, оно не включается в счетчик COUNT.

Рассмотрим пример функции COUNT, который демонстрирует, как значения NULL оцениваются функцией COUNT.

Например, если у вас есть следующая таблица, называемая markets:

market_id name filials
1 ikea yes
2 METRO
3 EMAG

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

Этот пример COUNT вернет 3, так как все значения market_id в наборе результатов запроса НЕ являются NULL.

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

Этот пример COUNT будет возвращать только 1, так как только одно значение filials в наборе результатов запроса НЕ NULL. Это будет первая строка, где будет указано filials = «yes». Это единственная строка, которая включена в вычисление функции COUNT.

Применение

Функция COUNT может использоваться в следующих версиях SQL Server (Transact-SQL):
SQL Server vNext, SQL Server 2016, SQL Server 2015, SQL Server 2014, SQL Server 2012, SQL Server 2008 R2, SQL Server 2008, SQL Server 2005

Пример с одним полем

Рассмотрим некоторые примеры SQL Server функции COUNT, чтобы понять, как использовать функцию COUNT в SQL Server (Transact-SQL).

Например, вы можете узнать, сколько contacts имеет пользователь с last_name = «Rasputin».

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

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

Вы можете использовать оператор DISTINCT в функции COUNT. Например, приведенный ниже оператор SQL возвращает число уникальных department, где хотя бы один сотрудник имеет first_name = 'Samvel'.

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

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

В некоторых случаях вам потребуется использовать оператор GROUP BY с функцией COUNT.

Например, вы также можете использовать функцию COUNT, чтобы вернуть имя department и количество "Number of employees" (в соответствующем department), находящихся в state 'Nevada'.

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