Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Punkt końcowy analizy SQL w usłudze Microsoft Fabric
Hurtownia danych w usłudze Microsoft Fabric
Baza 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
Treści powiązane
- funkcje agregujące (Transact-SQL)
- COUNT (Transact-SQL)
- int, bigint, smallint i tinyint