Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:SQL Server
База данных Azure SQL
Управляемый экземпляр Azure SQL
Azure Synapse Analytics
Система платформы аналитики (PDW)
Конечная точка SQL аналитики в Microsoft Fabric
Хранилище в Microsoft Fabric
База данных SQL в Microsoft Fabric
Эта функция возвращает количество элементов, найденных в группе. Функция COUNT_BIG работает подобно функции COUNT. Эти функции различаются только типами данных в возвращаемых значениях. Функция COUNT_BIG всегда возвращает значение типа данных bigint. Функция COUNT всегда возвращает значение типа данных int.
Соглашения о синтаксисе Transact-SQL
Синтаксис
Синтаксис функции агрегирования:
COUNT_BIG ( { [ [ ALL | DISTINCT ] expression ] | * } )
Синтаксис функции аналитики:
COUNT_BIG ( { [ ALL ] expression | * } ) OVER ( [ <partition_by_clause> ] )
Аргументы
ВСЕ
Применяет агрегатную функцию ко всем значениям.
ALL служит значением по умолчанию.
DISTINCT
Указывает, что COUNT_BIG возвращает количество уникальных значений, отличных от NULL.
выражение
Выражение любого типа данных.
COUNT_BIG не поддерживает агрегатные функции или вложенные запросы в выражении.
*
Указывает, что функция COUNT_BIG должна учитывать все строки, чтобы определить общее количество строк таблицы для возврата.
COUNT_BIG(*) не принимает параметры и не поддерживает использование DISTINCT.
COUNT_BIG(*)не требует параметра выражения, так как по определению он не использует сведения о определенном столбце. Функция COUNT_BIG(*) возвращает количество строк в указанной таблице с учетом повторяющихся строк. Каждая строка учитывается отдельно, включая строки со значением NULL.
ПРИЁМ ( [ partition_by_clause ] [ order_by_clause ]
partition_by_clause делит результирующий набор, полученный с помощью предложения FROM, на секции, к которым применяется функция COUNT_BIG. Если не указать partition_by_clause, функция обрабатывает все строки результирующих наборов запросов как одну группу.
order_by_clause определяет логический порядок выполнения операции. Дополнительные сведения см. в предложении OVER.
Типы возвращаемых данных
bigint
Замечания
COUNT_BIG(*) возвращает количество элементов в группе. Это число включает NULL значения и дубликаты.
COUNT_BIG(ALL <expression>) вычисляет выражение для каждой строки в группе и возвращает число непустых значений.
COUNT_BIG(DISTINCT <expression>) вычисляет выражение для каждой строки в группе и возвращает количество уникальных, не допускающих значения NULL.
Детерминированное и недетерминированное использование
COUNT_BIG — детерминированная функция при использовании безOVER предложений и ORDER BY предложений.
COUNT_BIG
недетерминирован при использовании сOVER предложениями и ORDER BY предложениями.
Использование OVER и ORDER BY предложения |
Детерминированный |
|---|---|
| нет | Да |
| Да | нет |
Дополнительные сведения см. в разделе детерминированные и недетерминированные функции.
Примеры
Примеры кода в этой статье используют базу данных образца AdventureWorks2025 или AdventureWorksDW2025, которую можно скачать с домашней страницы образцов и проектов сообщества Microsoft SQL Server и.
А. Использование COUNT_BIG и DISTINCT
В этом примере возвращается количество различных названий заданий в HumanResources.Employee таблице, которую может хранить сотрудник.
SELECT COUNT_BIG(DISTINCT JobTitle)
FROM HumanResources.Employee;
GO
Вот результат.
-----------
67
В. Использование COUNT_BIG(*)
В этом примере возвращается общее количество сотрудников в HumanResources.Employee таблице.
SELECT COUNT_BIG(*)
FROM HumanResources.Employee;
GO
Вот результат.
-----------
290
С. Использование COUNT_BIG(*) с другими агрегатами
В этом примере показано, что функция COUNT_BIG(*) работает с другими статистическими функциями в списке SELECT.
SELECT COUNT_BIG(*), AVG(Bonus)
FROM Sales.SalesPerson
WHERE SalesQuota > 25000;
GO
Вот результат.
------ ---------------------
14 3472.1428
D. Использование предложения OVER
В этом примере используется MINпредложение , AVGMAXи COUNT_BIG функции с OVER предложением для возврата агрегированных значений для каждого отдела в HumanResources.Department таблице.
SELECT DISTINCT d.Name,
MIN(eph.Rate) OVER (PARTITION BY edh.DepartmentID) AS MinSalary,
MAX(eph.Rate) OVER (PARTITION BY edh.DepartmentID) AS MaxSalary,
AVG(eph.Rate) OVER (PARTITION BY edh.DepartmentID) AS AvgSalary,
COUNT_BIG(edh.BusinessEntityID) OVER (PARTITION BY edh.DepartmentID) AS EmployeesPerDept
FROM HumanResources.EmployeePayHistory AS eph
INNER JOIN HumanResources.EmployeeDepartmentHistory AS edh
ON eph.BusinessEntityID = edh.BusinessEntityID
INNER JOIN HumanResources.Department AS d
ON d.DepartmentID = edh.DepartmentID
WHERE edh.EndDate IS NULL
ORDER BY d.Name;
Вот результат.
Name MinSalary MaxSalary AvgSalary EmployeesPerDept
---------------------------- ----------- ----------- ----------- -----------------
Document Control 10.25 17.7885 14.3884 5
Engineering 32.6923 63.4615 40.1442 6
Executive 39.06 125.50 68.3034 4
Facilities and Maintenance 9.25 24.0385 13.0316 7
Finance 13.4615 43.2692 23.935 10
Human Resources 13.9423 27.1394 18.0248 6
Information Services 27.4038 50.4808 34.1586 10
Marketing 13.4615 37.50 18.4318 11
Production 6.50 84.1346 13.5537 195
Production Control 8.62 24.5192 16.7746 8
Purchasing 9.86 30.00 18.0202 14
Quality Assurance 10.5769 28.8462 15.4647 6
Research and Development 40.8654 50.4808 43.6731 4
Sales 23.0769 72.1154 29.9719 18
Shipping and Receiving 9.00 19.2308 10.8718 6
Tool Design 8.62 29.8462 23.5054 6
Примеры: Azure Synapse Analytics и система платформы аналитики (PDW)
E. Использование COUNT_BIG и DISTINCT
В этом примере функция возвращает количество различных должностей, которые может иметь конкретный сотрудник компании.
USE ssawPDW;
SELECT COUNT_BIG(DISTINCT Title)
FROM dbo.DimEmployee;
Вот результат.
-----------
67
F. Использование COUNT_BIG(*)
В этом примере функция возвращает общее количество строк в таблице dbo.DimEmployee.
USE ssawPDW;
SELECT COUNT_BIG(*)
FROM dbo.DimEmployee;
Вот результат.
-------------
296
G. Использование COUNT_BIG(*) с другими агрегатами
В этом примере функция COUNT_BIG(*) работает с другими статистическими функциями в списке SELECT. Запрос возвращает количество торговых представителей с годовой квотой продаж более 500 000 долл. США и их среднюю квоту продаж.
USE ssawPDW;
SELECT COUNT_BIG(EmployeeKey) AS TotalCount,
AVG(SalesAmountQuota) AS [Average Sales Quota]
FROM dbo.FactSalesQuota
WHERE SalesAmountQuota > 500000
AND CalendarYear = 2001;
Вот результат.
TotalCount Average Sales Quota
---------- -------------------
10 683800.0000
H. Использование COUNT_BIG с ПОМОЩЬЮ HAVING
В этом примере функция COUNT_BIG используется с предложением HAVING, чтобы получить список подразделений компании, в каждом из которых работает более 15 сотрудников.
USE ssawPDW;
SELECT DepartmentName,
COUNT_BIG(EmployeeKey) AS EmployeesInDept
FROM dbo.DimEmployee
GROUP BY DepartmentName
HAVING COUNT_BIG(EmployeeKey) > 15;
Вот результат.
DepartmentName EmployeesInDept
-------------- ---------------
Sales 18
Production 179
I. Использование COUNT_BIG с OVER
В этом примере функция COUNT_BIG используется с предложением OVER, чтобы получить количество продуктов, содержащихся в каждом из указанных заказов на продажу.
USE ssawPDW;
SELECT DISTINCT COUNT_BIG(ProductKey) OVER (PARTITION BY SalesOrderNumber) AS ProductCount,
SalesOrderNumber
FROM dbo.FactInternetSales
WHERE SalesOrderNumber IN (N'SO53115', N'SO55981');
Вот результат.
ProductCount SalesOrderID
------------ -----------------
3 SO53115
1 SO55981