Bagikan melalui


COUNT_BIG (T-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSistem Platform Analitik (PDW)Titik akhir analitik SQL di Microsoft FabricGudang di Microsoft FabricDatabase SQL di Microsoft Fabric

Fungsi ini mengembalikan jumlah item yang ditemukan dalam grup. COUNT_BIG beroperasi seperti fungsi COUNT . Fungsi-fungsi ini hanya berbeda dalam jenis data dari nilai pengembaliannya. COUNT_BIG selalu mengembalikan nilai jenis data bigint . COUNT selalu mengembalikan nilai tipe data int .

Konvensi sintaks transact-SQL

Sintaks

Sintaks fungsi agregasi:

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

Sintaks fungsi analitik:

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

Argumen

SEMUA

Menerapkan fungsi agregat ke semua nilai. ALL berfungsi sebagai default.

NYATA

Menentukan yang COUNT_BIG mengembalikan jumlah nilai unik non-null.

expression

Ekspresi jenis apa pun. COUNT_BIG tidak mendukung fungsi agregat atau subkueri dalam ekspresi.

*

Menentukan bahwa COUNT_BIG harus menghitung semua baris untuk menentukan jumlah baris tabel total yang akan dikembalikan. COUNT_BIG(*) tidak mengambil parameter dan tidak mendukung penggunaan DISTINCT. COUNT_BIG(*) tidak memerlukan parameter ekspresi karena menurut definisi, parameter tersebut tidak menggunakan informasi tentang kolom tertentu. COUNT_BIG(*) mengembalikan jumlah baris dalam tabel tertentu, dan mempertahankan baris duplikat. Ini menghitung setiap baris secara terpisah, termasuk baris yang berisi nilai null.

OVER ( [ partition_by_clause ] [ order_by_clause ] )

partition_by_clause membagi tataan hasil yang dihasilkan oleh FROM klausul menjadi partisi tempat COUNT_BIG fungsi diterapkan. Jika Anda tidak menentukan partition_by_clause, fungsi memperlakukan semua baris hasil kueri yang ditetapkan sebagai satu grup. order_by_clause menentukan urutan logis operasi. Untuk informasi selengkapnya, lihat klausa OVER.

Jenis yang dikembalikan

bigint

Keterangan

COUNT_BIG(*) mengembalikan jumlah item dalam grup. Jumlah ini mencakup NULL nilai dan duplikat.

COUNT_BIG(ALL <expression>) mengevaluasi ekspresi untuk setiap baris dalam grup, dan mengembalikan jumlah nilai non-null.

COUNT_BIG(DISTINCT <expression>) mengevaluasi ekspresi untuk setiap baris dalam grup, dan mengembalikan jumlah nilai unik dan bukan null.

Penggunaan deterministik dan nondeterministik

COUNT_BIG adalah fungsi deterministik ketika digunakan tanpaOVER klausul dan ORDER BY .

COUNT_BIG bersifat nondeterministik saat digunakan denganOVER klausa dan ORDER BY .

OVER Menggunakan dan ORDER BY klausa Deterministik
Tidak. Yes
Yes Tidak.

Untuk informasi selengkapnya, lihat Fungsi deterministik dan nondeterministik.

Contoh

Sampel kode dalam artikel ini menggunakan database sampel AdventureWorks2025 atau AdventureWorksDW2025, yang dapat Anda unduh dari halaman beranda Sampel dan Proyek Komunitas Microsoft SQL Server.

A. Menggunakan COUNT_BIG dan DISTINCT

Contoh ini mengembalikan jumlah jabatan pekerjaan yang berbeda dalam HumanResources.Employee tabel yang dapat dipegang oleh karyawan.

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

Berikut kumpulan hasilnya.

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

B. Gunakan COUNT_BIG(*)

Contoh ini mengembalikan jumlah total karyawan dalam HumanResources.Employee tabel.

SELECT COUNT_BIG(*)
FROM HumanResources.Employee;
GO

Berikut kumpulan hasilnya.

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

C. Gunakan COUNT_BIG(*) dengan agregat lain

Contoh ini menunjukkan bahwa COUNT_BIG(*) berfungsi dengan fungsi agregat lain dalam SELECT daftar.

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

Berikut kumpulan hasilnya.

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

D. Menggunakan klausa OVER

Contoh ini menggunakan MINfungsi , MAX, AVG, dan COUNT_BIG dengan OVER klausul untuk mengembalikan nilai agregat untuk setiap departemen dalam HumanResources.Department tabel.

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;

Berikut kumpulan hasilnya.

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

Contoh: Azure Synapse Analytics and Analytics Platform System (PDW)

E. Menggunakan COUNT_BIG dan DISTINCT

Contoh ini mengembalikan jumlah judul berbeda yang dapat dipegang oleh karyawan perusahaan tertentu.

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

Berikut kumpulan hasilnya.

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

F. Gunakan COUNT_BIG(*)

Contoh ini mengembalikan jumlah total baris dalam dbo.DimEmployee tabel.

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

Berikut kumpulan hasilnya.

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

G. Gunakan COUNT_BIG(*) dengan agregat lain

Contoh ini dikombinasikan COUNT_BIG(*) dengan fungsi agregat lainnya dalam SELECT daftar. Ini mengembalikan jumlah perwakilan penjualan dengan kuota penjualan tahunan yang lebih besar dari $500.000, dan kuota penjualan rata-rata perwakilan penjualan tersebut.

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

Berikut kumpulan hasilnya.

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

H. Menggunakan COUNT_BIG dengan HAVING

Contoh ini menggunakan dengan COUNT_BIG klausul HAVING untuk mengembalikan departemen perusahaan, yang masing-masing memiliki lebih dari 15 karyawan.

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

Berikut kumpulan hasilnya.

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

1. Menggunakan COUNT_BIG dengan OVER

Contoh ini menggunakan dengan COUNT_BIG klausul OVER , untuk mengembalikan jumlah produk yang terkandung dalam setiap pesanan penjualan yang ditentukan.

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

Berikut kumpulan hasilnya.

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