SQLite
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> SQLite

Kết hợp Số lượng SQLite () với GROUP BY để Thêm cột “Đếm” vào Tập kết quả của bạn

Nếu bạn cần thêm cột "đếm" vào tập kết quả của truy vấn cơ sở dữ liệu khi sử dụng SQLite, bạn có thể sử dụng count() hàm cung cấp số lượng và GROUP BY để chỉ định cột để nhóm kết quả.

Ví dụ

Dưới đây là một ví dụ nhanh để chứng minh.

SELECT ArtistId, count(Title)
FROM Album
GROUP BY ArtistId
LIMIT 10;

Kết quả:

ArtistId    count(Title)
----------  ------------
1           2           
2           2           
3           1           
4           1           
5           1           
6           2           
7           1           
8           3           
9           1           
10          1           

Trong trường hợp này, ID của từng nghệ sĩ được liệt kê trong ArtistId và số lượng album của nghệ sĩ đó được liệt kê trong số lượng (Tiêu đề) cột.

Để làm cho điều này dễ đọc hơn một chút, đây là một truy vấn tương tự, nhưng lần này tôi trả lại tên của nghệ sĩ thay vì ID. Tôi làm điều này bằng cách thực hiện kết hợp bên trong với Nghệ sĩ bảng.

Trong trường hợp này, tôi thêm WHERE mệnh đề chỉ trả lại những nghệ sĩ bắt đầu bằng chữ cái 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;

Kết quả:

Name             count(al.Title)
---------------  ---------------
David Coverdale  1              
Deep Purple      11             
Def Leppard      1              
Dennis Chambers  1              
Djavan           2              
Dread Zeppelin   1              

Sắp xếp theo số lượng ()

Chúng tôi có thể sửa đổi điều này một chút để tập kết quả được sắp xếp theo số lượng. Nói cách khác, chúng tôi có thể sắp xếp thứ tự sao cho những nghệ sĩ có nhiều album nhất được liệt kê đầu tiên và ngược lại.

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;

Kết quả:

Name                  count(al.Title)
--------------------  ---------------
Deep Purple           11             
Djavan                2              
David Coverdale       1              
Def Leppard           1              
Dennis Chambers       1              
Dread Zeppelin        1              

Trên thực tế, chúng ta có thể tiến thêm một bước nữa và thêm bí danh cho count() . Điều này sẽ giúp chúng tôi không phải sao chép nó trong ORDER BY mệnh đề.

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;

Kết quả:

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. Cách hoạt động của hàm JulianDay () trong SQLite

  2. <expr> được mong đợi, có '?'

  3. SQLite - Câu lệnh JOIN

  4. Hiểu hướng dẫn về cách lưu dữ liệu trong cơ sở dữ liệu SQL của Android.com

  5. Cách sử dụng khóa ngoại trong sqlite?