Freigeben über


COUNT_BIG (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankVerwaltete Azure SQL-InstanzAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-Analyseendpunkt in Microsoft FabricLagerhaus in Microsoft FabricSQL-Datenbank in Microsoft Fabric

Diese Funktion gibt die Anzahl der in einer Gruppe gefundenen Elemente zurück. COUNT_BIG arbeitet wie die COUNT-Funktion. Diese Funktionen unterscheiden sich nur in den Datentypen ihrer Rückgabewerte. COUNT_BIG gibt immer einen Wert vom Datentyp bigint zurück. COUNT gibt immer einen Wert vom Datentyp int zurück.

Transact-SQL-Syntaxkonventionen

Syntax

Syntax der Aggregationsfunktion:

COUNT_BIG ( { [ [ ALL | DISTINCT ] expression ] | * } )

Analysefunktionssyntax:

COUNT_BIG ( { [ ALL ] expression | * } ) OVER ( [ <partition_by_clause> ] )

Argumente

ALL

Wendet die Aggregatfunktion auf alle Werte an. ALL dient als Standard.

DISTINCT

Gibt an, dass COUNT_BIG die Anzahl eindeutiger Nicht-Null-Werte zurückgegeben wird.

expression

Ein Ausdruck beliebigen Typs. COUNT_BIG unterstützt keine Aggregatfunktionen oder Unterabfragen in einem Ausdruck.

*

Gibt an, dass COUNT_BIG alle Zeilen zählen soll, um die Gesamtzahl der zurückzugebenden Tabellenzeilen zu bestimmen. COUNT_BIG(*) verwendet keine Parameter und unterstützt nicht die Verwendung von DISTINCT. COUNT_BIG(*) erfordert keinen expression-Parameter, da definitionsgemäß keine Informationen zu einer bestimmten Spalte verwendet werden. COUNT_BIG(*) gibt die Anzahl der Zeilen in einer angegebenen Tabelle zurück. Duplikate werden beibehalten. Die Funktion zählt jede Zeile separat, einschließlich der Zeilen, die null-Werte enthalten.

ÜBER ( [ partition_by_clause ] [ order_by_clause ] )

Das Argument partition_by_clause unterteilt das von der FROM-Klausel erzeugte Resultset in Partitionen, auf die die COUNT_BIG-Funktion angewendet wird. Wenn Sie die partition_by_clause nicht angeben, behandelt die Funktion alle Zeilen des Abfrageergebnissatzes als einzelne Gruppe. order_by_clause bestimmt die logische Reihenfolge, in der der Vorgang ausgeführt wird. Weitere Informationen finden Sie unter OVER-Klausel.

Rückgabetypen

bigint

Bemerkungen

COUNT_BIG(*) gibt die Anzahl der Elemente in einer Gruppe zurück. Diese Anzahl enthält NULL Werte und Duplikate.

COUNT_BIG(ALL <expression>) Wertet ausdrücke für jede Zeile in einer Gruppe aus und gibt die Anzahl der Nicht-NULL-Werte zurück.

COUNT_BIG(DISTINCT <expression>) Wertet ausdrücke für jede Zeile in einer Gruppe aus und gibt die Anzahl eindeutiger, nicht NULL-Werte zurück.

Deterministische und nichtdeterministische Verwendung

COUNT_BIG ist eine deterministische Funktion, wenn sie ohne die OVER Und-Klauseln ORDER BY verwendet wird.

COUNT_BIG ist nicht deterministisch , wenn sie mit den OVER Und-Klauseln ORDER BY verwendet wird.

Verwendung OVER und ORDER BY Klauseln Deterministisch
Nein Yes
Yes Nein

Weitere Informationen finden Sie unter Deterministische und nicht deterministische Funktionen.

Beispiele

Die Codebeispiele in diesem Artikel verwenden die AdventureWorks2025- oder AdventureWorksDW2025 Beispieldatenbank, die Sie von der Microsoft SQL Server Samples and Community Projects Homepage herunterladen können.

A. Verwenden von COUNT_BIG und DISTINCT

In diesem Beispiel wird die Anzahl der verschiedenen Stellentitel in der Tabelle zurückgegeben, die HumanResources.Employee ein Mitarbeiter enthalten kann.

SELECT COUNT_BIG(DISTINCT JobTitle)
FROM HumanResources.Employee;
GO

Hier ist das Ergebnis.

-----------
67

B. Verwenden von COUNT_BIG(*)

In diesem Beispiel wird die Gesamtzahl der Mitarbeiter in der HumanResources.Employee Tabelle zurückgegeben.

SELECT COUNT_BIG(*)
FROM HumanResources.Employee;
GO

Hier ist das Ergebnis.

-----------
290

C. Verwenden von COUNT_BIG(*) mit anderen Aggregaten

Dieses Beispiel zeigt, dass COUNT_BIG(*) mit anderen Aggregatfunktionen in der SELECT-Liste funktioniert.

SELECT COUNT_BIG(*), AVG(Bonus)
FROM Sales.SalesPerson
WHERE SalesQuota > 25000;
GO

Hier ist das Ergebnis.

------ ---------------------
14     3472.1428

D. Verwenden der OVER-Klausel

In diesem Beispiel werden die , , und COUNT_BIG Funktionen mit der OVER Klausel verwendet, um aggregierte Werte für jede Abteilung in der HumanResources.Department Tabelle zurückzugeben. AVGMAXMIN

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;

Hier ist das Ergebnis.

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

Beispiele: Azure Synapse Analytics und Analytics-Plattformsystem (PDW)

E. Verwenden von COUNT_BIG und DISTINCT

Dieses Beispiel gibt die Anzahl der verschiedenen Positionen zurück, die ein Mitarbeiter eines bestimmten Unternehmens innehaben kann.

USE ssawPDW;
SELECT COUNT_BIG(DISTINCT Title)
FROM dbo.DimEmployee;

Hier ist das Ergebnis.

-----------
67

F. Verwenden von COUNT_BIG(*)

In diesem Beispiel wird die Gesamtzahl der Zeilen in der dbo.DimEmployee-Tabelle zurückgegeben.

USE ssawPDW;
SELECT COUNT_BIG(*)
FROM dbo.DimEmployee;

Hier ist das Ergebnis.

-------------
296

G. Verwenden von COUNT_BIG(*) mit anderen Aggregaten

Dieses Beispiel vereint COUNT_BIG(*) mit weiteren Aggregatfunktionen in der SELECT-Liste. Es gibt die Anzahl der Vertriebsmitarbeiter mit einer jährlichen Sollvorgabe für den Verkauf von über 500.000 USD und die durchschnittliche Sollvorgabe dieser Vertriebsmitarbeiter für den Verkauf zurück.

USE ssawPDW;
SELECT COUNT_BIG(EmployeeKey) AS TotalCount,
       AVG(SalesAmountQuota) AS [Average Sales Quota]
FROM dbo.FactSalesQuota
WHERE SalesAmountQuota > 500000
      AND CalendarYear = 2001;

Hier ist das Ergebnis.

TotalCount  Average Sales Quota
----------  -------------------
10          683800.0000

H. Verwenden von COUNT_BIG mit HAVING

Dieses Beispiel verwendet COUNT_BIG mit der HAVING-Klausel, um die Abteilungen einer Firma zurückzugeben, von denen jede mehr als 15 Mitarbeiter aufweist.

USE ssawPDW;
SELECT DepartmentName,
       COUNT_BIG(EmployeeKey) AS EmployeesInDept
FROM dbo.DimEmployee
GROUP BY DepartmentName
HAVING COUNT_BIG(EmployeeKey) > 15;

Hier ist das Ergebnis.

DepartmentName  EmployeesInDept
--------------  ---------------
Sales           18
Production      179

Ich. Verwenden von COUNT_BIG mit OVER

In diesem Beispiel wird COUNT_BIG mit der OVER-Klausel verwendet, um die Anzahl der enthaltenen Produkte für jeden der angegebenen Verkaufsaufträge zurückzugeben.

USE ssawPDW;
SELECT DISTINCT COUNT_BIG(ProductKey) OVER (PARTITION BY SalesOrderNumber) AS ProductCount,
                SalesOrderNumber
FROM dbo.FactInternetSales
WHERE SalesOrderNumber IN (N'SO53115', N'SO55981');

Hier ist das Ergebnis.

ProductCount   SalesOrderID
------------   -----------------
3              SO53115
1              SO55981