Dela via


COUNT_BIG (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)SQL-analysslutpunkt i Microsoft FabricLager i Microsoft FabricSQL-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