Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analysplattformssystem (PDW)
SQL-analysslutpunkt i Microsoft Fabric
Lager i Microsoft Fabric
SQL-databas i Microsoft Fabric
Denna funktion returnerar antalet objekt som hittats i en grupp.
COUNT_BIG fungerar som COUNT-funktionen . Dessa funktioner skiljer sig endast i datatyperna för deras returvärden.
COUNT_BIG returnerar alltid ett bigint-datatypvärde .
COUNT Returnerar alltid ett int-datatypvärde .
Transact-SQL syntaxkonventioner
Syntax
Syntax för sammansättningsfunktionen:
COUNT_BIG ( { [ [ ALL | DISTINCT ] expression ] | * } )
Analysfunktionssyntax:
COUNT_BIG ( { [ ALL ] expression | * } ) OVER ( [ <partition_by_clause> ] )
Arguments
ALL
Tillämpar aggregeringsfunktionen på alla värden.
ALL fungerar som standard.
SÄRSKILD
Anger som COUNT_BIG returnerar antalet unika värden som inte är null.
uttryck
Ett uttryck av valfri typ.
COUNT_BIG stöder inte aggregerade funktioner eller underfrågor i ett uttryck.
*
Specificerar att COUNT_BIG ska räkna alla rader för att bestämma det totala tabellradantalet som ska returneras.
COUNT_BIG(*) tar inga parametrar och stöder inte användning av DISTINCT.
COUNT_BIG(*) kräver ingen uttrycksparameter eftersom den per definition inte använder information om någon viss kolumn.
COUNT_BIG(*) returnerar antalet rader i en specificerad tabell och bevarar dubbletter av rader. Den räknar varje rad separat, inklusive rader som innehåller nollvärden.
ÖVER ( [ partition_by_clause ] [ order_by_clause ] )
partition_by_clause delar in resultatmängden som klausulen producerar FROM i partitioner där COUNT_BIG funktionen tillämpas. Om du inte anger partition_by_clause behandlar funktionen alla rader i frågeresultatuppsättningen som en enda grupp.
order_by_clause bestämmer den logiska ordningen för operationen. Mer information finns i OVER-satsen.
Returtyper
bigint
Anmärkningar
COUNT_BIG(*) returnerar antalet objekt i en grupp. Det här antalet inkluderar NULL värden och dubbletter.
COUNT_BIG(ALL <expression>) utvärderar uttryck för varje rad i en grupp och returnerar antalet värden som inte är null.
COUNT_BIG(DISTINCT <expression>) utvärderar uttryck för varje rad i en grupp och returnerar antalet unika värden som inte är null.
Deterministisk och icke-deterministisk användning
COUNT_BIGär en deterministisk funktion när den OVER används utan - och-satsernaORDER BY.
COUNT_BIGär nondeterministisk när den OVER används med - och-satsernaORDER BY.
Användningar OVER och ORDER BY satser |
Deterministisk |
|---|---|
| Nej | Yes |
| Yes | Nej |
Mer information finns i deterministiska och icke-terministiska funktioner.
Examples
Kodexemplen i den här artikeln använder AdventureWorks2025- eller AdventureWorksDW2025-exempeldatabasen, som du kan ladda ned från startsidan Microsoft SQL Server Samples och Community Projects.
A. Använda COUNT_BIG och DISTINCT
Det här exemplet returnerar antalet olika jobbtitlar i tabellen HumanResources.Employee som en anställd kan lagra.
SELECT COUNT_BIG(DISTINCT JobTitle)
FROM HumanResources.Employee;
GO
Här är resultatet.
-----------
67
B. Använda COUNT_BIG(*)
Det här exemplet returnerar det totala antalet anställda i HumanResources.Employee tabellen.
SELECT COUNT_BIG(*)
FROM HumanResources.Employee;
GO
Här är resultatet.
-----------
290
C. Använd COUNT_BIG(*) med andra aggregeringar
Det här exemplet visar att COUNT_BIG(*) fungerar med andra mängdfunktioner i SELECT listan.
SELECT COUNT_BIG(*), AVG(Bonus)
FROM Sales.SalesPerson
WHERE SalesQuota > 25000;
GO
Här är resultatet.
------ ---------------------
14 3472.1428
D. Använd OVER-satsen
I det här exemplet används MINfunktionerna , MAX, AVGoch COUNT_BIG med OVER -satsen för att returnera aggregerade värden för varje avdelning i HumanResources.Department tabellen.
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;
Här är resultatet.
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
Exempel: Azure Synapse Analytics and Analytics Platform System (PDW)
E. Använda COUNT_BIG och DISTINCT
Det här exemplet returnerar antalet olika titlar som en anställd på ett visst företag kan inneha.
USE ssawPDW;
SELECT COUNT_BIG(DISTINCT Title)
FROM dbo.DimEmployee;
Här är resultatet.
-----------
67
F. Använda COUNT_BIG(*)
Det här exemplet returnerar det totala antalet rader i dbo.DimEmployee tabellen.
USE ssawPDW;
SELECT COUNT_BIG(*)
FROM dbo.DimEmployee;
Här är resultatet.
-------------
296
G. Använd COUNT_BIG(*) med andra aggregeringar
Det här exemplet kombineras COUNT_BIG(*) med andra mängdfunktioner i SELECT listan. Det returnerar antalet försäljningsrepresentanter med en årlig försäljningskvot som är större än 500 000 USD och den genomsnittliga försäljningskvoten för dessa försäljningsrepresentanter.
USE ssawPDW;
SELECT COUNT_BIG(EmployeeKey) AS TotalCount,
AVG(SalesAmountQuota) AS [Average Sales Quota]
FROM dbo.FactSalesQuota
WHERE SalesAmountQuota > 500000
AND CalendarYear = 2001;
Här är resultatet.
TotalCount Average Sales Quota
---------- -------------------
10 683800.0000
H. Använda COUNT_BIG med HAVING
I det COUNT_BIG här exemplet används HAVING med -satsen för att returnera avdelningarna i ett företag, som var och en har fler än 15 anställda.
USE ssawPDW;
SELECT DepartmentName,
COUNT_BIG(EmployeeKey) AS EmployeesInDept
FROM dbo.DimEmployee
GROUP BY DepartmentName
HAVING COUNT_BIG(EmployeeKey) > 15;
Här är resultatet.
DepartmentName EmployeesInDept
-------------- ---------------
Sales 18
Production 179
I. Använda COUNT_BIG med OVER
Det här exemplet använder COUNT_BIG med OVER -satsen för att returnera antalet produkter som ingår i var och en av de angivna försäljningsorder.
USE ssawPDW;
SELECT DISTINCT COUNT_BIG(ProductKey) OVER (PARTITION BY SalesOrderNumber) AS ProductCount,
SalesOrderNumber
FROM dbo.FactInternetSales
WHERE SalesOrderNumber IN (N'SO53115', N'SO55981');
Här är resultatet.
ProductCount SalesOrderID
------------ -----------------
3 SO53115
1 SO55981