Функция 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 AdventureWorks2008R2;
GO
SELECT COUNT(DISTINCT JobTitle)
FROM HumanResources.Employee;
GO
Ниже приводится результирующий набор.
-----------
67
(1 row(s) affected)
Б. Использование функции COUNT(*)
В следующем примере определяется общее количество служащих, работающих в компании Adventure Works Cycles.
USE AdventureWorks2008R2;
GO
SELECT COUNT(*)
FROM HumanResources.Employee;
GO
Ниже приводится результирующий набор.
-----------
290
(1 row(s) affected)
В. Использование функции COUNT(*) совместно с другими статистическими функциями
В следующем примере показывается, что функция COUNT(*) в списке выбора может сочетаться с другими агрегатными функциями.
USE AdventureWorks2008R2;
GO
SELECT COUNT(*), AVG(Bonus)
FROM Sales.SalesPerson
WHERE SalesQuota > 25000;
GO
Ниже приводится результирующий набор.
----------- ---------------------
14 3472.1428
(1 row(s) affected)
См. также