Sdílet prostřednictvím


COUNT_BIG (Transact-SQL)

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLAzure Synapse AnalyticsAnalytics Platform System (PDW)Koncový bod analýzy SQL v Microsoft FabricSklad v Microsoft FabricDatabáze SQL v Microsoft Fabric

Tato funkce vrací počet položek nalezených ve skupině. COUNT_BIG funguje jako funkce COUNT . Tyto funkce se liší pouze typem dat podle svých návratových hodnot. COUNT_BIG vždy vrací hodnotu bigint datového typu. COUNT vždy vrací hodnotu datového typu int .

Transact-SQL konvence syntaxe

Syntaxe

Syntaxe agregační funkce:

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

Syntaxe analytické funkce:

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

Arguments

ALL

Použije agregační funkci na všechny hodnoty. ALL slouží jako výchozí.

ODLIŠNÝ

Určuje, že COUNT_BIG vrátí počet jedinečných hodnot, které nejsou null.

expression

Výraz libovolného typu. COUNT_BIG nepodporuje agregační funkce ani poddotazy ve výrazu.

*

Specifikuje, že by měly počítat všechny řádky, COUNT_BIG aby se určil celkový počet řádků v tabulce, který je třeba vrátit. COUNT_BIG(*) nepřijímá žádné parametry a nepodporuje použití DISTINCT. COUNT_BIG(*) nevyžaduje parametr výrazu , protože podle definice nepoužívá informace o žádném konkrétním sloupci. COUNT_BIG(*) vrací počet řádků ve specifikované tabulce a zachovává duplicitní řádky. Počítá každý řádek zvlášť, včetně řádků obsahujících nulové hodnoty.

KONEC ( [ partition_by_clause ] [ order_by_clause ] )

partition_by_clause rozděluje množinu výsledků vytvořenou klauzulí FROM na partce, na které je funkce COUNT_BIG aplikována. Pokud nezadáte partition_by_clause, bude funkce zacházet se všemi řádky sady výsledků dotazu jako s jednou skupinou. order_by_clause určuje logické pořadí operace. Další informace najdete v tématu KLAUZULE OVER.

Návratové typy

bigint

Poznámky

COUNT_BIG(*) vrátí počet položek ve skupině. Tento počet zahrnuje NULL hodnoty a duplicity.

COUNT_BIG(ALL <expression>) vyhodnotí výraz pro každý řádek ve skupině a vrátí počet hodnot, které nejsou null.

COUNT_BIG(DISTINCT <expression>) vyhodnotí výraz pro každý řádek ve skupině a vrátí počet jedinečných hodnot, které nejsou null.

Deterministické a nedeterministické použití

COUNT_BIG je deterministická funkce při použití bezOVER klauzulí a ORDER BY klauzulí.

COUNT_BIG je nedeterministický při použití sOVER klauzulemi a ORDER BY klauzulemi.

Použití OVER a ORDER BY klauzule Deterministický
Ne Ano
Ano Ne

Další informace naleznete v tématu Deterministické a nedeterministické funkce.

Examples

Ukázky kódu v tomto článku používají ukázkovou databázi AdventureWorks2025 nebo AdventureWorksDW2025, kterou si můžete stáhnout z domovské stránky Microsoft SQL Serveru pro ukázky a komunitní projekty .

A. Použití COUNT_BIG a DISTINCT

Tento příklad vrátí počet různých pracovních pozic v HumanResources.Employee tabulce, kterou může zaměstnanec uchovávat.

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

Tady je soubor výsledků.

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

B. Použití COUNT_BIG(*)

Tento příklad vrátí celkový počet zaměstnanců v HumanResources.Employee tabulce.

SELECT COUNT_BIG(*)
FROM HumanResources.Employee;
GO

Tady je soubor výsledků.

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

C. Použití COUNT_BIG(*) s jinými agregacemi

Tento příklad ukazuje, že COUNT_BIG(*) funguje s dalšími agregačními funkcemi v SELECT seznamu.

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

Tady je soubor výsledků.

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

D. Použití klauzule OVER

Tento příklad používá funkce MIN, a AVGMAXCOUNT_BIG funkce s OVER klauzulí k vrácení agregovaných hodnot pro každé oddělení v HumanResources.Department tabulce.

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;

Tady je soubor výsledků.

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

Příklady: Azure Synapse Analytics a Analytický platformový systém (PDW)

E. Použití COUNT_BIG a DISTINCT

Tento příklad vrátí počet různých titulů, které může mít zaměstnanec konkrétní společnosti.

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

Tady je soubor výsledků.

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

F. Použití COUNT_BIG(*)

Tento příklad vrátí celkový počet řádků v dbo.DimEmployee tabulce.

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

Tady je soubor výsledků.

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

G. Použití COUNT_BIG(*) s jinými agregacemi

Tento příklad kombinuje COUNT_BIG(*) s dalšími agregačními funkcemi SELECT v seznamu. Vrátí počet zástupců prodeje s roční kvótou prodeje větší než 500 000 USD a průměrnou prodejní kvótou těchto zástupců prodeje.

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

Tady je soubor výsledků.

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

H. Použití COUNT_BIG s having

Tento příklad používá COUNT_BIG s HAVING klauzulí k vrácení oddělení společnosti, z nichž každý má více než 15 zaměstnanců.

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

Tady je soubor výsledků.

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

I. Použití COUNT_BIG s over

Tento příklad používá COUNT_BIG s OVER klauzulí k vrácení počtu produktů obsažených v každé zadané prodejní objednávce.

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

Tady je soubor výsledků.

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