MySQL menyertakan COUNT()
fungsi, yang memungkinkan Anda mengetahui berapa banyak baris yang akan dikembalikan dari kueri. Fungsi ini adalah bagian dari standar SQL, dan dapat digunakan dengan sebagian besar sistem manajemen basis data relasional.
COUNT()
fungsi juga dapat digunakan untuk memengaruhi hasil kueri jika diperlukan, misalnya, dengan hanya mengembalikan hasil yang memiliki jumlah baris lebih besar dari jumlah tertentu.
Artikel ini berisi contoh COUNT()
penggunaan di MySQL.
Data
Pertama, inilah data yang akan kita gunakan untuk contoh di halaman ini:
PILIH *FROM Tugas;
Hasil:
+--------+-------------------+----------------- +| ID Tugas | Nama Tugas | Deskripsi Tugas |+--------+-------------------+-----------------+ | 1 | Berkebun | NULL || 2 | Beri makan kucing | NULL || 3 | Cat atap | NULL || 4 | Ajak anjing jalan-jalan | NULL || 5 | santai | NULL || 6 | Beri makan kucing | NULL |+--------+-------------------+-----------------+
Hitung Semua Baris dalam Tabel
Anda dapat menggunakan COUNT()
untuk mengembalikan jumlah total baris dalam tabel:
PILIH JUMLAH(*)FROM Tugas;
Hasil:
+----------+| JUMLAH(*) |+----------+| 6 |+----------+
Ini mengembalikan jumlah baris dalam tabel karena kami tidak memberikan kriteria apa pun untuk mempersempit hasil.
Persempit Hasil
Saat kita menambahkan WHERE
klausa yang mempersempit kumpulan hasil, kami mendapatkan angka yang lebih kecil:
SELECT COUNT(*)FROM TasksWHERE TaskName LIKE '%cat%';
Hasil:
+----------+| JUMLAH(*) |+----------+| 2 |+----------+
Satu Kolom vs Asterisk (*)
Contoh sebelumnya semua menggunakan tanda bintang untuk menerapkan hitungan ke semua kolom. Seperti halnya kueri apa pun, tanda bintang bersifat opsional, dan digunakan sebagai karakter pengganti untuk mengembalikan semua kolom. Jadi saat menggunakan COUNT()
fungsi, Anda juga memiliki opsi untuk menyediakan kolom tertentu (sebagai lawan dari semua kolom) sebagai argumen.
Contoh:
PILIH JUMLAH(NamaTugas)FROM Tugas;
Hasil:
+-----------------+| COUNT(NamaTugas) |+-----------------+| 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(Deskripsi Tugas)FROM Tugas;
Hasil:
+------------------------+| COUNT(Deskripsi Tugas) |+------------------------+| 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 baris dengan non-NULL
different yang berbeda nilai.
Anda mungkin memperhatikan bahwa TaskName
kolom 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:
+--------------------------+| COUNT(Nama Tugas BERBEDA) |+--------------------------+| 5 |+--------------------------+
Jadi, meskipun tabel berisi enam baris, dua di antaranya adalah duplikat. Oleh karena itu, keduanya dihitung sebagai satu kita mendapatkan hasil dari lima.
Contoh – Klausa HAVING
Anda juga dapat menggunakan COUNT()
dengan HAVING
klausa untuk membatasi kumpulan hasil berdasarkan jumlah baris yang akan dikembalikan.
Berikut ini contoh penggunaan kumpulan data yang berbeda dengan contoh sebelumnya:
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:
+-------------------------+-------------+| Nama Artis | Jumlah Album |+--------------+-------------+| Gadis Besi | 5 || Devin Townsend | 3 || Michael Belajar Rock | 3 || Tom Jones | 3 || Allan Holdsworth | 2 |+-------------------------+-------------+Kueri ini hanya mengembalikan artis yang telah merilis lebih dari 1 album. Inilah yang terjadi ketika kita meningkatkan nilai di
HAVING
klausa: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:
+-------------+-------------+| Nama Artis | Jumlah Album |+------------+-------------+| Gadis Besi | 5 |+-------------+-------------+