SQLite
 sql >> Teknologi Basis Data >  >> RDS >> SQLite

Gabungkan SQLite Count() dengan GROUP BY untuk Menambahkan Kolom “Hitung” ke Kumpulan Hasil Anda

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         

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Android :Cara Menggabungkan Tabel Anak Dengan Tabel Induk Sqlite

  2. Android SQLite SEPERTI escape wildcard

  3. Bagaimana Operator LIKE Bekerja di SQLite

  4. Dapatkan Senin Pertama setiap Bulan di SQLite

  5. Buat Kunci Asing di SQLite