Saat bekerja dengan database, terkadang Anda ingin mengetahui berapa banyak baris yang akan dikembalikan oleh kueri, tanpa benar-benar mengembalikan hasil kueri. Atau terkadang Anda mungkin hanya ingin mengetahui berapa banyak baris dalam tabel tertentu.
Di SQL Server, Anda dapat menggunakan T-SQL COUNT()
berfungsi untuk mengembalikan jumlah baris yang akan dikembalikan dalam kueri.
Data
Berikut data yang akan kami gunakan dalam contoh di halaman ini:
PILIH *FROM Tugas;
Hasil:
TaskId TaskName TaskDescription TaskCode------ ------------ --------------- --------1 Feed kucing TBA null 2 Anjing air TBA null 3 Memberi makan taman TBA null 4 Cat karpet TBA null 5 Membersihkan atap TBA null 6 Memberi makan kucing TBA null
Contoh – Hitung Semua Baris dalam Tabel
Berikut ini contoh penggunaan COUNT()
fungsi untuk mengembalikan jumlah total baris dalam sebuah tabel:
PILIH JUMLAH(*)FROM Tugas;
Hasil:
6
Ini mengembalikan jumlah baris dalam tabel karena kami tidak memberikan kriteria apa pun untuk mempersempit hasil.
Contoh – Menambahkan Kriteria
Berikut adalah contoh penghitungan berapa banyak baris yang akan dikembalikan berdasarkan kriteria yang diberikan:
SELECT COUNT(*)FROM TasksWHERE TaskName LIKE '%dog%' OR TaskName LIKE '%cat%';
Hasil:
3
Contoh – Tentukan Satu Kolom
Contoh sebelumnya semua menggunakan tanda bintang untuk menerapkan hitungan ke semua kolom. Anda juga memiliki opsi untuk menentukan kolom tertentu.
Contoh:
PILIH JUMLAH(NamaTugas)FROM Tugas;
Hasil:
6
Meskipun contoh ini mengembalikan hasil yang sama seperti yang kita dapatkan saat menggunakan tanda bintang, itu tidak selalu akan menjadi kasusnya. Misalnya, inilah yang terjadi jika kita menentukan kolom yang berbeda:
PILIH JUMLAH(Kode Tugas)FROM Tugas;
Hasil:
0
Dalam hal ini kita mendapatkan nol, karena kolom tersebut berisi nilai nol di setiap baris.
Contoh – Berbeda
Anda dapat menambahkan DISTINCT
argumen untuk mengembalikan hanya jumlah nilai unik (nonnull).
Anda mungkin memperhatikan bahwa setiap baris di TaskDescription
our kami kolom berisi nilai yang sama (“TBA”). Dan TaskName
kolom juga memiliki nilai duplikat ("Umpan kucing" muncul dua kali). Ini dapat menyebabkan masalah jika Anda tidak ingin duplikat dihitung.
Begini tampilannya jika kita menerapkan DISTINCT
argumen ke TaskName
kolom:
SELECT COUNT(DISTINCT TaskName)FROM Tasks;
Hasil:
5
Dan di sini diterapkan terhadap TaskDescription
tabel (dengan semua nilai identik):
SELECT COUNT(DISTINCT TaskDescription)FROM Tasks;
Hasil:
1
Contoh – Klausa HAVING
Anda juga dapat menggunakan COUNT()
dengan HAVING
klausa untuk membatasi kumpulan hasil berdasarkan jumlah baris yang akan dikembalikan.
Contoh:
GUNAKAN Musik;SELECT ar.ArtistName, COUNT(al.AlbumName) 'Album Count'FROM Artists arINNER JOIN Albums al ON ar.ArtistId =al.ArtistIdGROUP BY ar.ArtistNameHAVING COUNT(al.AlbumName)> 1;Hasil:
ArtistName Album Hitungan------------------------- -----------Allan Holdsworth 2 Devin Townsend 3 Iron Maiden 5 Michael Belajar Mengguncang 3 Tom Jones 3Contoh ini menggunakan database yang berbeda dari contoh sebelumnya. Ini hanya mengembalikan artis yang telah merilis lebih dari 1 album. Kami dapat mengubah jumlah album sebanyak yang kami inginkan:
GUNAKAN Musik;SELECT ar.ArtistName, COUNT(al.AlbumName) 'Album Count'FROM Artists arINNER JOIN Albums al ON ar.ArtistId =al.ArtistIdGROUP BY ar.ArtistNameHAVING COUNT(al.AlbumName)> 4;Hasil:
Jumlah Album ArtisNama------------------------- -----------Iron Maiden 5Fungsi COUNT_BIG()
T-SQL juga memiliki
COUNT_BIG()
fungsi yang bekerja persis sepertiCOUNT()
, kecualiCOUNT()
mengembalikan int tipe data danCOUNT_BIG()
mengembalikan besar tipe data.Fungsi ini dapat berguna untuk tampilan yang diindeks dengan kueri yang dikelompokkan. Anda mungkin menemukan jika Anda mencoba membuat indeks untuk tampilan yang berisi
COUNT(*)
, bahwa Anda mendapatkan kesalahan seperti ini:Tidak dapat membuat indeks pada tampilan "Music.dbo.AlbumsByArtist" karena menggunakan COUNT agregat. Gunakan COUNT_BIG sebagai gantinya.Dalam kasus seperti itu, mengubah tampilan untuk menggunakan
COUNT_BIG(*)
harus menyelesaikan masalah.