Jika Anda perlu menambahkan kolom “hitungan” ke kumpulan hasil kueri database saat menggunakan SQLite, Anda dapat menggunakan count()
berfungsi untuk memberikan hitungan, dan GROUP BY
klausa untuk menentukan kolom untuk mengelompokkan hasil.
Contoh
Berikut contoh cepat untuk ditunjukkan.
SELECT ArtistId, count(Title)
FROM Album
GROUP BY ArtistId
LIMIT 10;
Hasil:
ArtistId count(Title) ---------- ------------ 1 2 2 2 3 1 4 1 5 1 6 2 7 1 8 3 9 1 10 1
Dalam hal ini, setiap ID artis dicantumkan di ArtistId kolom, dan jumlah album untuk artis tersebut tercantum di hitungan(Judul) kolom.
Untuk membuatnya sedikit lebih mudah dibaca, inilah kueri serupa, tetapi kali ini saya mengembalikan nama artis, bukan ID. Saya melakukan ini dengan melakukan inner join dengan Artis tabel.
Dalam hal ini, saya menambahkan WHERE
klausul untuk mengembalikan hanya artis yang dimulai dengan huruf D .
SELECT
ar.Name,
count(al.Title)
FROM Album al
INNER JOIN Artist ar
ON ar.ArtistId = al.ArtistId
WHERE ar.Name LIKE 'D%'
GROUP BY ar.Name;
Hasil:
Name count(al.Title) --------------- --------------- David Coverdale 1 Deep Purple 11 Def Leppard 1 Dennis Chambers 1 Djavan 2 Dread Zeppelin 1
Memesan dengan Hitungan()
Kita dapat memodifikasi ini sedikit sehingga kumpulan hasil diurutkan berdasarkan hitungan. Dengan kata lain, kita dapat mengurutkannya agar artis yang memiliki album terbanyak diurutkan pertama, dan sebaliknya.
SELECT
ar.Name,
count(al.Title)
FROM Album al
INNER JOIN Artist ar
ON ar.ArtistId = al.ArtistId
WHERE ar.Name LIKE 'D%'
GROUP BY ar.Name
ORDER BY count(al.Title) DESC;
Hasil:
Name count(al.Title) -------------------- --------------- Deep Purple 11 Djavan 2 David Coverdale 1 Def Leppard 1 Dennis Chambers 1 Dread Zeppelin 1
Sebenarnya, kita bisa melangkah lebih jauh dan menambahkan alias untuk count()
. Ini akan membebaskan kita dari keharusan menduplikasi itu di ORDER BY
klausa.
SELECT
ar.Name,
count(al.Title) AS AlbumCount
FROM Album al
INNER JOIN Artist ar
ON ar.ArtistId = al.ArtistId
WHERE ar.Name LIKE 'D%'
GROUP BY ar.Name
ORDER BY AlbumCount DESC;
Hasil:
Name AlbumCount -------------------- ---------- Deep Purple 11 Djavan 2 David Coverdale 1 Def Leppard 1 Dennis Chambers 1 Dread Zeppelin 1