Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
Azure Synapse Analytics
Elemzési platformrendszer (PDW)
SQL Analytics-végpont a Microsoft Fabricben
Raktár a Microsoft Fabricben
SQL-adatbázis a Microsoft Fabricben
Ez a függvény a csoportban található elemek számát adja vissza.
COUNT a COUNT_BIG függvényhez hasonlóan működik. Ezek a függvények csak a visszatérési értékek adattípusaiban különböznek.
COUNT mindig egy int adattípus-értéket ad vissza.
COUNT_BIG mindig nagy adattípus-értéket ad vissza.
Transact-SQL szintaxis konvenciók
Szemantika
Aggregációs függvény szintaxisa
COUNT ( { [ [ ALL | DISTINCT ] expression ] | * } )
Elemzési függvény szintaxisa
COUNT ( [ ALL ] { expression | * } ) OVER ( [ <partition_by_clause> ] )
Érvek
Összes
Az összesítő függvény alkalmazása az összes értékre. Az ALL az alapértelmezett.
KÜLÖNBÖZŐ
COUNT Az egyedi nemnull értékek számát adja vissza.
kifejezés
Bármilyen típusú kifejezés , kivéve a képet, az ntextet vagy a szöveget.
COUNT nem támogatja a kifejezések összesítő függvényét vagy al lekérdezését.
*
Megadja, hogy COUNT az összes sort meg kell számolnia a visszaadni kívánt táblasorok teljes számának meghatározásához.
COUNT(*) nem használ paramétereket, és nem támogatja a DISTINCT használatát.
COUNT(*) nem igényel kifejezésparamétert , mert definíció szerint nem használ adatokat egyetlen oszlopról sem.
COUNT(*) Egy adott tábla sorainak számát adja vissza, és megőrzi az ismétlődő sorokat. Külön számolja az egyes sorokat. Ide tartoznak a null értékeket tartalmazó sorok.
VÉGE ( [ partition_by_clause ] [ order_by_clause ] [ ROW_or_RANGE_clause ] )
A partition_by_clause a záradék által FROM létrehozott eredményhalmazt partíciókra osztja, amelyekre a COUNT függvényt alkalmazza. Ha nincs megadva, a függvény a lekérdezés eredményhalmazának összes sorát egyetlen csoportként kezeli. A order_by_clause határozza meg a művelet logikai sorrendjét. További információkért lásd a OVER záradékot (Transact-SQL).
Visszatérési típusok
int NOT NULL, amikor
ANSI_WARNINGSvan, azonban azONSQL Server mindig metaadatokként kezeliCOUNTa kifejezéseketint NULL, kivéve, ha be van csomagolva.ISNULLint NULL , ha
ANSI_WARNINGSazOFF.
Megjegyzések
-
COUNT(*)azGROUP BYeredményhalmaz számosságát (sorok számát) adja vissza. Ide tartoznak az összesNULLértékből és ismétlődésekből álló sorok. -
COUNT(*)azGROUP BYegyes csoportok sorainak számát adja vissza. Ez magában foglalja azNULLértékeket és az ismétlődéseket. -
COUNT(ALL <expression>)kiértékeli a csoport minden sorához tartozó kifejezést , és visszaadja a nemnull értékek számát. -
COUNT(DISTINCT <expression>)kiértékeli a csoport minden sorához tartozó kifejezést , és visszaadja az egyedi, nemnull értékek számát.
COUNT determinisztikus függvény, ha az OVER és AZ ORDER BY záradékok nélkül használatos. Nemdeterminisztikus, ha az OVER és AZ ORDER BY záradékokkal használja. További információ: Determinisztikus és nem determinisztikus függvények.
ARITHABORT és ANSI_WARNINGS
Ha COUNT a visszatérési érték meghaladja az int maximális értékét (azaz 231-1 vagy 2 147 483 647), a COUNT függvény egész szám túlcsordulás miatt meghiúsul. Ha COUNT a túlcsordulások, valamint a beállítások és a ARITHABORT beállítások ANSI_WARNINGS, OFFCOUNT a rendszer ad vissza .NULL Ellenkező esetben a ARITHABORTANSI_WARNINGS lekérdezés megszakad, és megjelenik ONaz aritmetikai túlcsordulási hiba.Msg 8115, Level 16, State 2; Arithmetic overflow error converting expression to data type int. Ezeknek a nagy eredményeknek a helyes kezeléséhez használja COUNT_BIG inkább, ami nagyot ad vissza.
Ha mindkettő ARITHABORTANSI_WARNINGSON, akkor biztonságosan körbefuttathatja COUNT a hívási helyeket ISNULL( <count-expr>, 0 ) , hogy a kifejezés típusa helyett a kifejezés típusát int NOT NULL kényszerítse int NULL. A körbefuttatás COUNT azt jelenti, hogy a túlcsordulási hibák csendben ISNULL el lesznek tiltva, ami a helyesség szempontjából megfontolandó.
Példák
Egy. A DARAB és a DISTINCT használata
Ez a példa az Adventure Works Cycles-alkalmazottak által birtokolható különböző címek számát adja vissza.
SELECT COUNT(DISTINCT Title)
FROM HumanResources.Employee;
GO
Itt van az eredmények összessége.
-----------
67
(1 row(s) affected)
B. A DARAB(*) használata
Ez a példa az Adventure Works Cycles alkalmazottainak teljes számát adja vissza.
SELECT COUNT(*)
FROM HumanResources.Employee;
GO
Itt van az eredmények összessége.
-----------
290
(1 row(s) affected)
C. A DARAB(*) használata más aggregátumokkal
Ez a példa azt mutatja be, hogy COUNT(*) működik más összesítő függvények a SELECT listában. A példa az AdventureWorks2025 adatbázist használja.
SELECT COUNT(*), AVG(Bonus)
FROM Sales.SalesPerson
WHERE SalesQuota > 25000;
GO
Itt van az eredmények összessége.
----------- ---------------------
14 3472.1428
(1 row(s) affected)
D. Az OVER záradék használata
Ez a példa a MIN, MAX, AVG és COUNT függvényeket használja a OVER záradékkal, hogy visszaadja az összes osztály aggregált értékeit az AdventureWorks2025 adatbázis HumanResources.Department táblájában.
SELECT DISTINCT Name
, MIN(Rate) OVER (PARTITION BY edh.DepartmentID) AS MinSalary
, MAX(Rate) OVER (PARTITION BY edh.DepartmentID) AS MaxSalary
, AVG(Rate) OVER (PARTITION BY edh.DepartmentID) AS AvgSalary
, COUNT(edh.BusinessEntityID) OVER (PARTITION BY edh.DepartmentID) AS EmployeesPerDept
FROM HumanResources.EmployeePayHistory AS eph
JOIN HumanResources.EmployeeDepartmentHistory AS edh
ON eph.BusinessEntityID = edh.BusinessEntityID
JOIN HumanResources.Department AS d
ON d.DepartmentID = edh.DepartmentID
WHERE edh.EndDate IS NULL
ORDER BY Name;
Itt van az eredmények összessége.
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
(16 row(s) affected)
Példák: Azure Synapse Analytics and Analytics Platform System (PDW)
E. A DARAB és a DISTINCT használata
Ez a példa egy adott vállalat alkalmazottja által birtokolható különböző címek számát adja vissza.
USE ssawPDW;
SELECT COUNT(DISTINCT Title)
FROM dbo.DimEmployee;
Itt van az eredmények összessége.
-----------
67
F. A DARAB(*) használata
Ez a példa a tábla sorainak dbo.DimEmployee teljes számát adja vissza.
USE ssawPDW;
SELECT COUNT(*)
FROM dbo.DimEmployee;
Itt van az eredmények összessége.
-------------
296
G. A DARAB(*) használata más aggregátumokkal
Ez a példa kombinálja COUNT(*) a SELECT lista más összesítő függvényeivel. Visszaadja az 500 000 USD-nél nagyobb éves értékesítési kvótával rendelkező értékesítési képviselők számát, valamint az értékesítési képviselők átlagos értékesítési kvótáját.
USE ssawPDW;
SELECT COUNT(EmployeeKey) AS TotalCount, AVG(SalesAmountQuota) AS [Average Sales Quota]
FROM dbo.FactSalesQuota
WHERE SalesAmountQuota > 500000 AND CalendarYear = 2001;
Itt van az eredmények összessége.
TotalCount Average Sales Quota
---------- -------------------
10 683800.0000
H. A COUNT használata a HAVING használatával
Ez a példa a COUNT záradékkal egy vállalat részlegeinek visszaadására használjaHAVING, amelyek mindegyike több mint 15 alkalmazottal rendelkezik.
USE ssawPDW;
SELECT DepartmentName,
COUNT(EmployeeKey)AS EmployeesInDept
FROM dbo.DimEmployee
GROUP BY DepartmentName
HAVING COUNT(EmployeeKey) > 15;
Itt van az eredmények összessége.
DepartmentName EmployeesInDept
-------------- ---------------
Sales 18
Production 179
Én. A COUNT és a OVER használata
Ez a példa a COUNT záradékkal együtt a OVER megadott értékesítési rendelésekben szereplő termékek számát adja vissza.
USE ssawPDW;
SELECT DISTINCT COUNT(ProductKey) OVER(PARTITION BY SalesOrderNumber) AS ProductCount
, SalesOrderNumber
FROM dbo.FactInternetSales
WHERE SalesOrderNumber IN (N'SO53115',N'SO55981');
Itt van az eredmények összessége.
ProductCount SalesOrderID
------------ -----------------
3 SO53115
1 SO55981