Функция COUNT (Transact-SQL)
Возвращает количество элементов в группе. Функция COUNT работает как функция COUNT_BIG. Единственное различие между двумя функциями — возвращаемые значения. Функция COUNT всегда возвращает значение типа int. Функция COUNT_BIG всегда возвращает значение типа данных bigint. Может следовать за предложением OVER.
Синтаксис
COUNT ( { [ [ ALL | DISTINCT ] expression ] | * } )
Аргументы
ALL
Применяет статистическую функцию ко всем значениям. ALL применяется по умолчанию.DISTINCT
Указывает, что функция COUNT возвращает количество уникальных значений, не равных NULL.expression
Выражение любого типа, за исключением text, image или ntext. Статистические функции и вложенные запросы запрещены.*
Указывается, что при возврате общего числа строк в таблице необходимо посчитать все строки. Функция COUNT(*) не принимает аргументы и не может использоваться с ключевым словом DISTINCT. Для функции COUNT(*) не нужен аргумент expression, так как по определению она не использует сведения о каких-либо конкретных столбцах. Функция COUNT(*) возвращает количество строк в указанной таблице, не отбрасывая дублированные строки. Подсчитывает каждую строку отдельно. При этом учитываются и строки, содержащие значения NULL.
Типы возвращаемых данных
int
Замечания
Функция COUNT(*) возвращает количество элементов в группе. Сюда входят значения NULL и повторяющиеся значения.
Функция COUNT(ALL expression) оценивает expression для каждой строки в группе и возвращает количество значений, не равных NULL.
Функция COUNT(DISTINCT expression) оценивает expression для каждой строки в группе и возвращает количество уникальных значений, не равных NULL.
Для возвращаемых значений, больших 2^31-1, функция COUNT формирует сообщение об ошибке. Вместо этого следует использовать COUNT_BIG.
Примеры
A. Использование функции COUNT и аргумента DISTINCT
В следующем примере приводится количество различных должностей, которые могут иметь служащие, работающие в компании Adventure Works Cycles.
USE AdventureWorks;
GO
SELECT COUNT(DISTINCT Title)
FROM HumanResources.Employee;
GO
Ниже приводится результирующий набор.
-----------
67
(1 row(s) affected)
Б. Использование функции COUNT(*)
В следующем примере определяется общее количество служащих, работающих в компании Adventure Works Cycles.
USE AdventureWorks;
GO
SELECT COUNT(*)
FROM HumanResources.Employee;
GO
Ниже приводится результирующий набор.
-----------
290
(1 row(s) affected)
В. Использование функции COUNT(*) совместно с другими статистическими функциями
В следующем примере показывается, что функция COUNT(*) в списке выбора может сочетаться с другими статистическими функциями.
USE AdventureWorks;
GO
SELECT COUNT(*), AVG(Bonus)
FROM Sales.SalesPerson
WHERE SalesQuota > 25000;
GO
Ниже приводится результирующий набор.
----------- ---------------------
14 3472.1428
(1 row(s) affected)
См. также