Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:SQL Server
Azure SQL Database
Spravovaná instance Azure SQL
Azure Synapse Analytics
Analytics Platform System (PDW)
Koncový bod analýzy SQL v Microsoft Fabric
Sklad v Microsoft Fabric
Databá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 .
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
Související obsah
- agregační funkce
(Transact-SQL) - COUNT (Transact-SQL)
- int, bigint, smallint a tinyint