count (Transact-sql)
Gruptaki öğelerin sayısını döndürür. count çalışır gibi COUNT_BIG işlevi. İki işlev arasındaki tek fark, dönüş değerleri olduğunu. SAYISI her zaman döndürür bir intveri türü değeri. COUNT_BIG her zaman döndürür bir bigintveri türü değeri. Tarafından takip edilmesi yan tümcesi içinde.
Transact-SQL Sözdizim Kuralları
Sözdizimi
COUNT ( { [ [ ALL | DISTINCT ] expression ] | * } )
Bağımsız değişkenler
ALL
Toplama işlevi, tüm değerleri için geçerlidir. TÜM varsayılan olduğunu.FARKLI
count benzersiz nonnull değerlerin sayısını verir belirtir.expression
Olan bir ifade dışında herhangi bir türde text, image, ya ntext. Toplama işlevleri ve alt sorgular verilmez.*
Tüm satırlar tablodaki satırların sayısı dönmek için sayılması belirtir. count (*) hiçbir parametre alır ve DISTINCT ile kullanılamaz. count (*) does değil istemek bir expressionparametre tanımına göre bu belirli herhangi bir sütun hakkında bilgi kullanmadığından,. count (*) kopyalarını kurtulmak olmadan belirtilen tablodaki satır sayısını döndürür. Her satır ayrı olarak sayar. Bu, null değerleri içeren satırları içerir.
Dönüş Türleri
int
Açıklamalar
count(*), bir grup için öğe sayısını döndürür. Bu, null değerleri ve yinelemeler içerir.
count (tüm expression) değerlendirir expressionbir grup içindeki her satır için ve nonnull değerlerin sayısını verir.
count (DISTINCT expression) değerlendirir expressionbir grup içindeki her satır için benzersiz, nonnull değerlerin sayısını verir.
İçin dönüş değerlerini büyük 2 ^ 31-1, say bir hata üretir. COUNT_BIG kullanın.
Örnekler
A.count kullanarak ve farklı
Aşağıdaki örnek listeler sayısı farklı başlıklar da çalışıyor bir çalışan Adventure Works Cyclestutabilir.
USE AdventureWorks2012;
GO
SELECT COUNT(DISTINCT Title)
FROM HumanResources.Employee;
GO
USE AdventureWorks2012;
GO
SELECT COUNT(DISTINCT Title)
FROM HumanResources.Employee;
GO
Sonuç kümesi buradadır.
-----------
67
(1 row(s) affected)
B.count(*) kullanarak
Aşağıdaki örnek, çalışan çalışanların toplam sayısını bulur Adventure Works Cycles.
USE AdventureWorks2012;
GO
SELECT COUNT(*)
FROM HumanResources.Employee;
GO
USE AdventureWorks2012;
GO
SELECT COUNT(*)
FROM HumanResources.Employee;
GO
Sonuç kümesi buradadır.
-----------
290
(1 row(s) affected)
C.Diğer toplamları ile count(*) kullanma
Aşağıdaki örnek gösteren COUNT(*)diğer toplu işlevleri seçme listesinde birleştirilebilir.
USE AdventureWorks2012;
GO
SELECT COUNT(*), AVG(Bonus)
FROM Sales.SalesPerson
WHERE SalesQuota > 25000;
GO
USE AdventureWorks2012;
GO
SELECT COUNT(*), AVG(Bonus)
FROM Sales.SalesPerson
WHERE SalesQuota > 25000;
GO
Sonuç kümesi buradadır.
----------- ---------------------
14 3472.1428
(1 row(s) affected)
C.ÜZERINDEN yan tümcesi kullanarak
MIN, max, avg ve count işlevler ÜZERINDEN yan tümcesi ile her bir bölüm için toplanmış değerlerini sağlamak için aşağıdaki örnek kullanır HumanResources.Departmenttablosu.
USE AdventureWorks2012;
GO
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;
USE AdventureWorks2012;
GO
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;
Sonuç kümesi buradadır.
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)
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)