Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada de SQL do Azure
Azure Synapse Analytics
Analytics Platform System (PDW)
Ponto de extremidade de análise de SQL no Microsoft Fabric
Depósito no Microsoft Fabric
Banco de dados SQL no Microsoft Fabric
Essa função retorna o número de itens encontrados em um grupo.
COUNT_BIG funciona como a função COUNT. Essas funções são diferentes apenas nos tipos de dados de seus valores de retorno.
COUNT_BIG sempre retorna um valor do tipo de dados bigint.
COUNT sempre retorna um valor do tipo de dados int.
Convenções de sintaxe de Transact-SQL
Sintaxe
Sintaxe da função de agregação:
COUNT_BIG ( { [ [ ALL | DISTINCT ] expression ] | * } )
Sintaxe de função analítica:
COUNT_BIG ( { [ ALL ] expression | * } ) OVER ( [ <partition_by_clause> ] )
Argumentos
ALL
Aplica a função de agregação a todos os valores.
ALL serve como o padrão.
DISTINTO
Especifica que COUNT_BIG retorna o número de valores não nulos exclusivos.
expressão
Uma expression de qualquer tipo.
COUNT_BIG não oferece suporte a funções de agregação ou subconsultas em uma expressão.
*
Especifica que COUNT_BIG deve contar todas as linhas para determinar a contagem total de linhas da tabela para retornar.
COUNT_BIG(*) não usa parâmetros e não dá suporte ao uso de DISTINCT.
COUNT_BIG(*) não exige um parâmetro expression porque, por definição, não usa informações sobre nenhuma coluna específica.
COUNT_BIG(*) retorna o número de linhas em uma tabela especificada e preserva linhas duplicatas. Ele conta cada linha separadamente, inclusive as linhas que contêm valores nulos.
ENCERRADO ( [ partition_by_clause ] [ order_by_clause ] )
A partition_by_clause divide o conjunto de resultados produzido pela cláusula FROM em partições às quais a função COUNT_BIG é aplicada. Se você não especificar o partition_by_clause, a função tratará todas as linhas do conjunto de resultados da consulta como um único grupo. A order_by_clause determina a ordem lógica da operação. Para obter mais informações, consulte a cláusula OVER.
Tipos de retorno
bigint
Comentários
COUNT_BIG(*) retorna o número de itens em um grupo. Essa contagem inclui NULL valores e duplicatas.
COUNT_BIG(ALL <expression>) avalia a expressão para cada linha em um grupo e retorna o número de valores não nulos.
COUNT_BIG(DISTINCT <expression>) avalia a expressão para cada linha em um grupo e retorna o número de valores exclusivos e não nulos.
Uso determinístico e não determinístico
COUNT_BIG é uma função determinística quando usada sem as OVER cláusulas e ORDER BY .
COUNT_BIG não é determinístico quando usado com as OVER cláusulas e ORDER BY .
Usos OVER e ORDER BY cláusulas |
Determinística |
|---|---|
| Não | Yes |
| Yes | Não |
Para obter mais informações, confira Funções determinísticas e não determinísticas.
Exemplos
Os exemplos de código neste artigo usam o banco de dados de exemplo AdventureWorks2025 ou AdventureWorksDW2025, que você pode baixar na página inicial Microsoft SQL Server Samples and Community Projects.
A. Usar COUNT_BIG e DISTINCT
Este exemplo retorna o número de cargos diferentes na HumanResources.Employee tabela que um funcionário pode manter.
SELECT COUNT_BIG(DISTINCT JobTitle)
FROM HumanResources.Employee;
GO
Veja aqui o conjunto de resultados.
-----------
67
B. Usar COUNT_BIG(*)
Este exemplo retorna o número total de funcionários na HumanResources.Employee tabela.
SELECT COUNT_BIG(*)
FROM HumanResources.Employee;
GO
Veja aqui o conjunto de resultados.
-----------
290
C. Usar COUNT_BIG(*) com outras agregações
Este exemplo mostra que COUNT_BIG(*) funciona com outras funções de agregação na lista SELECT.
SELECT COUNT_BIG(*), AVG(Bonus)
FROM Sales.SalesPerson
WHERE SalesQuota > 25000;
GO
Veja aqui o conjunto de resultados.
------ ---------------------
14 3472.1428
D. Usar a cláusula OVER
Este exemplo usa as MINfunções , MAXe AVGCOUNT_BIG funções com a OVER cláusula para retornar valores agregados para cada departamento na HumanResources.Department tabela.
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;
Veja aqui o conjunto de resultados.
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
Exemplos: Azure Synapse Analytics e PDW (Analytics Platform System)
E. Usar COUNT_BIG e DISTINCT
Este exemplo retorna o número de cargos diferentes que um funcionário de uma empresa específica pode ter.
USE ssawPDW;
SELECT COUNT_BIG(DISTINCT Title)
FROM dbo.DimEmployee;
Veja aqui o conjunto de resultados.
-----------
67
F. Usar COUNT_BIG(*)
Este exemplo retorna o número total de linhas na tabela dbo.DimEmployee.
USE ssawPDW;
SELECT COUNT_BIG(*)
FROM dbo.DimEmployee;
Veja aqui o conjunto de resultados.
-------------
296
G. Usar COUNT_BIG(*) com outras agregações
Este exemplo combina COUNT_BIG(*) com outras funções de agregação na lista SELECT. Ele retorna o número de representantes de vendas com uma cota de vendas anual maior que US$ 500.000 e a cota de vendas média desses representantes de vendas.
USE ssawPDW;
SELECT COUNT_BIG(EmployeeKey) AS TotalCount,
AVG(SalesAmountQuota) AS [Average Sales Quota]
FROM dbo.FactSalesQuota
WHERE SalesAmountQuota > 500000
AND CalendarYear = 2001;
Veja aqui o conjunto de resultados.
TotalCount Average Sales Quota
---------- -------------------
10 683800.0000
H. Usar COUNT_BIG com HAVING
Este exemplo usa COUNT_BIG com a cláusula HAVING para retornar os departamentos de uma empresa, cada qual com mais de 15 funcionários.
USE ssawPDW;
SELECT DepartmentName,
COUNT_BIG(EmployeeKey) AS EmployeesInDept
FROM dbo.DimEmployee
GROUP BY DepartmentName
HAVING COUNT_BIG(EmployeeKey) > 15;
Veja aqui o conjunto de resultados.
DepartmentName EmployeesInDept
-------------- ---------------
Sales 18
Production 179
I. Usar COUNT_BIG com OVER
Este exemplo a seguir usa COUNT_BIG com a cláusula OVER para retornar o número de produtos que estão contidos em cada uma das ordens de venda especificadas.
USE ssawPDW;
SELECT DISTINCT COUNT_BIG(ProductKey) OVER (PARTITION BY SalesOrderNumber) AS ProductCount,
SalesOrderNumber
FROM dbo.FactInternetSales
WHERE SalesOrderNumber IN (N'SO53115', N'SO55981');
Veja aqui o conjunto de resultados.
ProductCount SalesOrderID
------------ -----------------
3 SO53115
1 SO55981