В этом учебном пособии вы узнаете, как использовать функцию COUNT в SQL Server (Transact-SQL) с синтаксисом и примерами.
Описание
В SQL Server (Transact-SQL) функция COUNT возвращает количество строк поля или выражения в результирующий набор.
Синтаксис
Синтаксис функции COUNT в SQL Server (Transact-SQL):
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 - это столбец или выражение, чьи не 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:
1 2 3 4 |
SELECT COUNT(market_id) FROM markets; --Результат: 3 |
Этот пример COUNT вернет 3, так как все значения market_id в наборе результатов запроса НЕ являются NULL.
Однако, если вы запустили следующий оператор SELECT, который использует функцию COUNT:
1 2 3 4 |
SELECT COUNT(filials) FROM markets; --Результат: 1 |
Этот пример 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».
1 2 3 |
SELECT COUNT(*) AS "Number of contacts" FROM contacts WHERE last_name = 'Rasputin'; |
В этом примере функции COUNT мы выражению COUNT (*) указали алиас "Number of contacts". Поэтому в результирующем наборе будет отображаться "Number of contacts" в качестве имени поля.
Пример с использованием DISTINCT
Вы можете использовать оператор DISTINCT в функции COUNT. Например, приведенный ниже оператор SQL возвращает число уникальных department, где хотя бы один сотрудник имеет first_name = 'Samvel'.
1 2 3 |
SELECT COUNT(DISTINCT department) AS "Unique departments" FROM employees WHERE first_name = 'Samvel'; |
Опять же, полю COUNT (DISTINCT department) указан псевдоним "Unique departments". Имя этого поля будет отображаться в результирующем наборе.
Пример с использованием GROUP BY
В некоторых случаях вам потребуется использовать оператор GROUP BY с функцией COUNT.
Например, вы также можете использовать функцию COUNT, чтобы вернуть имя department и количество "Number of employees" (в соответствующем department), находящихся в state 'Nevada'.
1 2 3 4 |
SELECT department, COUNT(*) AS "Number of employees" FROM employees WHERE state = 'Nevada' GROUP BY department; |
Поскольку вы указали один столбец в операторе SELECT, который не включены в функции COUNT, вы должны использовать оператор GROUP BY. Поэтому поле department должно быть указано в операторе GROUP BY.