Udostępnij przez


COUNT_BIG (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punkt końcowy analizy SQL w usłudze Microsoft FabricHurtownia danych w usłudze Microsoft FabricBaza danych SQL w usłudze Microsoft Fabric

Funkcja ta zwraca liczbę przedmiotów znajdujących się w grupie. COUNT_BIG działa jak funkcja COUNT . Funkcje te różnią się jedynie typami danych o wartości zwrotnych. COUNT_BIG zawsze zwraca wartość typu danych bigint . COUNT Zawsze zwraca wartość typu danych int .

Transact-SQL konwencje składni

Składnia

Składnia funkcji agregacji:

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

Składnia funkcji analitycznej:

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

Arguments

ALL

Stosuje funkcję agregacji do wszystkich wartości. ALL służy jako wartość domyślna.

ODMIENNY

Określa, że COUNT_BIG zwraca liczbę unikatowych wartości innych niż null.

expression

Wyrażenie dowolnego typu. COUNT_BIG nie obsługuje funkcji agregujących ani podzapytania w wyrażeniu.

*

Określa, że należy liczyć wszystkie wiersze, COUNT_BIG aby określić łączną liczbę wierszy w tabeli do zwrócenia. COUNT_BIG(*) nie przyjmuje żadnych parametrów i nie obsługuje użycia metody DISTINCT. COUNT_BIG(*) nie wymaga parametru wyrażenia , ponieważ z definicji nie używa informacji o żadnej konkretnej kolumnie. COUNT_BIG(*) zwraca liczbę wierszy w określonej tabeli i zachowuje zduplikowane wiersze. Liczy każdy wiersz osobno, w tym wiersze zawierające wartości zerowe.

KONIEC ( [ partition_by_clause ] [ order_by_clause ] )

partition_by_clause dzieli zbiór wyników wytworzony przez klauzulę FROM na partycje, do których funkcja COUNT_BIG jest stosowana. Jeśli nie określisz partition_by_clause, funkcja traktuje wszystkie wiersze zestawu wyników zapytania jako pojedynczą grupę. order_by_clause określa logiczną kolejność operacji. Aby uzyskać więcej informacji, zobacz klauzulę OVER.

Typy zwracane

bigint

Uwagi

COUNT_BIG(*) Zwraca liczbę elementów w grupie. Ta liczba obejmuje NULL wartości i duplikaty.

COUNT_BIG(ALL <expression>) oblicza wyrażenie dla każdego wiersza w grupie i zwraca liczbę wartości innych niż null.

COUNT_BIG(DISTINCT <expression>) oblicza wyrażenie dla każdego wiersza w grupie i zwraca liczbę unikatowych wartości innych niż null.

Deterministyczne i nieokreślone użycie

COUNT_BIG jest funkcją deterministyczną , gdy jest używana bezOVER klauzul i ORDER BY .

COUNT_BIG jest niedeterministyczny w przypadku użycia z klauzulamiOVER i ORDER BY .

Używa OVER klauzul i ORDER BY Deterministyczny
Nie. Tak
Tak Nie.

Aby uzyskać więcej informacji, zobacz funkcje deterministyczne i niedeterministyczne.

Przykłady

Przykłady kodu w tym artykule korzystają z przykładowej bazy danych AdventureWorks2025 lub AdventureWorksDW2025, którą można pobrać ze strony głównej Przykładów programu Microsoft SQL Server i projektów społeczności.

A. Używanie COUNT_BIG i DISTINCT

W tym przykładzie jest zwracana liczba różnych tytułów pracy w HumanResources.Employee tabeli, które może pomieścić pracownik.

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

Oto zestaw wyników.

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

B. Używanie COUNT_BIG(*)

Ten przykład zwraca łączną liczbę pracowników w HumanResources.Employee tabeli.

SELECT COUNT_BIG(*)
FROM HumanResources.Employee;
GO

Oto zestaw wyników.

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

C. Używanie COUNT_BIG(*) z innymi agregacjami

W tym przykładzie pokazano, że COUNT_BIG(*) działa z innymi funkcjami agregacji na SELECT liście.

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

Oto zestaw wyników.

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

D. Używanie klauzuli OVER

W tym przykładzie MINużyto funkcji , MAX, AVGi COUNT_BIG z klauzulą OVER , aby zwrócić zagregowane wartości dla każdego działu w HumanResources.Department tabeli.

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;

Oto zestaw wyników.

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

Przykłady: Azure Synapse Analytics and Analytics Platform System (PDW)

E. Używanie COUNT_BIG i DISTINCT

W tym przykładzie jest zwracana liczba różnych tytułów, które może pomieścić pracownik określonej firmy.

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

Oto zestaw wyników.

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

F. Używanie COUNT_BIG(*)

Ten przykład zwraca łączną liczbę wierszy w dbo.DimEmployee tabeli.

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

Oto zestaw wyników.

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

G. Używanie COUNT_BIG(*) z innymi agregacjami

Ten przykład łączy się COUNT_BIG(*) z innymi funkcjami agregacji na SELECT liście. Zwraca liczbę przedstawicieli sprzedaży z rocznym limitem sprzedaży większym niż 500 000 USD oraz średnią kwotą sprzedaży tych przedstawicieli sprzedaży.

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

Oto zestaw wyników.

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

H. Używanie COUNT_BIG z usługą HAVING

W tym przykładzie COUNT_BIG użyto HAVING klauzuli z klauzulą , aby zwrócić działy firmy, z których każdy ma więcej niż 15 pracowników.

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

Oto zestaw wyników.

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

I. Używanie COUNT_BIG z funkcją OVER

W tym przykładzie użyto COUNT_BIG klauzuli z klauzulą OVER , aby zwrócić liczbę produktów zawartych w każdym z określonych zamówień sprzedaży.

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

Oto zestaw wyników.

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