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

Nhóm SQLite bởi

Tóm tắt :trong hướng dẫn này, bạn sẽ học cách sử dụng SQLite GROUP BY mệnh đề để tạo một tập hợp các hàng tóm tắt từ một tập hợp các hàng.

Giới thiệu về SQLite GROUP BY mệnh đề

GROUP BY mệnh đề là một mệnh đề tùy chọn của SELECT tuyên bố. GROUP BY mệnh đề một nhóm hàng đã chọn thành các hàng tóm tắt theo giá trị của một hoặc nhiều cột.

GROUP BY mệnh đề trả về một hàng cho mỗi nhóm. Đối với mỗi nhóm, bạn có thể áp dụng một hàm tổng hợp, chẳng hạn như MIN , MAX , SUM , COUNT hoặc AVG để cung cấp thêm thông tin về từng nhóm.

Câu lệnh sau minh họa cú pháp của SQLite GROUP BY mệnh đề.

SELECT 
    column_1,
    aggregate_function(column_2) 
FROM 
    table
GROUP BY 
    column_1,
    column_2;
Code language: SQL (Structured Query Language) (sql)

Hãy thử nó

GROUP BY mệnh đề đứng sau FROM mệnh đề của SELECT tuyên bố. Trong trường hợp một câu lệnh chứa WHERE mệnh đề GROUP BY mệnh đề phải đứng sau WHERE mệnh đề.

Theo dõi GROUP BY mệnh đề là một cột hoặc danh sách các cột được phân tách bằng dấu phẩy được sử dụng để chỉ định nhóm.

SQLite GROUP BY ví dụ

Chúng tôi sử dụng tracks bảng từ cơ sở dữ liệu mẫu cho cuộc trình diễn.

SQLite GROUP BY mệnh đề với COUNT chức năng

Câu lệnh sau trả về id album và số lượng bản nhạc trên mỗi album. Nó sử dụng GROUP BY mệnh đề nhóm các bản nhạc theo album và áp dụng COUNT() chức năng cho từng nhóm.

SELECT
	albumid,
	COUNT(trackid)
FROM
	tracks
GROUP BY
	albumid;Code language: SQL (Structured Query Language) (sql)

Hãy thử nó

Bạn có thể sử dụng ORDER BY mệnh đề sắp xếp các nhóm như sau:

SELECT
	albumid,
	COUNT(trackid)
FROM
	tracks
GROUP BY
	albumid
ORDER BY COUNT(trackid) DESC;Code language: SQL (Structured Query Language) (sql)

Hãy thử nó

SQLite GROUP BYINNER JOIN mệnh đề

Bạn có thể truy vấn dữ liệu từ nhiều bảng bằng INNER JOIN , sau đó sử dụng GROUP BY mệnh đề để nhóm các hàng thành một tập hợp các hàng tóm tắt.

Ví dụ:câu lệnh sau kết hợp các tracks bảng với albums để lấy tiêu đề của album và sử dụng GROUP BY mệnh đề với COUNT để lấy số lượng bản nhạc trên mỗi album.

SELECT
	tracks.albumid,
	title,
	COUNT(trackid)
FROM
	tracks
INNER JOIN albums ON albums.albumid = tracks.albumid
GROUP BY
	tracks.albumid;Code language: SQL (Structured Query Language) (sql)

Hãy thử nó

SQLite GROUP BY với HAVING mệnh đề

Để lọc các nhóm, bạn sử dụng GROUP BY với HAVING mệnh đề. Ví dụ:để nhận các album có hơn 15 bản nhạc, bạn sử dụng câu lệnh sau:

SELECT
	tracks.albumid,
	title,
	COUNT(trackid)
FROM
	tracks
INNER JOIN albums ON albums.albumid = tracks.albumid
GROUP BY
	tracks.albumid
HAVING COUNT(trackid) > 15;Code language: SQL (Structured Query Language) (sql)

Hãy thử nó

SQLite GROUP BY mệnh đề với SUM ví dụ về hàm

Bạn có thể sử dụng SUM hàm để tính tổng mỗi nhóm. Ví dụ:để nhận tổng độ dài và byte cho mỗi album, bạn sử dụng SUM hàm để tính tổng số mili giây và byte.

SELECT
	albumid,
	SUM(milliseconds) length,
	SUM(bytes) size
FROM
	tracks
GROUP BY
	albumid;Code language: SQL (Structured Query Language) (sql)

Hãy thử nó

SQLite GROUP BY với MAX , MINAVG chức năng

Câu lệnh sau trả về id album, tiêu đề album, độ dài tối đa, độ dài tối thiểu và độ dài trung bình của các bản nhạc trong tracks bảng.

SELECT
	tracks.albumid,
	title,
	min(milliseconds),
	max(milliseconds),
	round(avg(milliseconds),2)
FROM
	tracks
INNER JOIN albums ON albums.albumid = tracks.albumid
GROUP BY
	tracks.albumid;Code language: SQL (Structured Query Language) (sql)

Hãy thử nó

SQLite GROUP BY ví dụ về nhiều cột

Trong ví dụ trước, chúng tôi đã sử dụng một cột trong GROUP BY mệnh đề. SQLite cho phép bạn nhóm các hàng theo nhiều cột.

Ví dụ:để nhóm các bản nhạc theo loại phương tiện và thể loại, bạn sử dụng câu lệnh sau:

SELECT
   MediaTypeId, 
   GenreId, 
   COUNT(TrackId)
FROM
   tracks
GROUP BY
   MediaTypeId, 
   GenreId;Code language: SQL (Structured Query Language) (sql)

Hãy thử nó

SQLite sử dụng kết hợp các giá trị của MediaTypeIdGenreId các cột dưới dạng một nhóm, ví dụ:(1,1) và (1,2). Sau đó, nó áp dụng COUNT chức năng trả về số lượng bản nhạc trong mỗi nhóm.

SQLite GROUP BY ví dụ về ngày tháng

Xem bảng hóa đơn sau từ cơ sở dữ liệu mẫu:

Câu lệnh sau trả về số lượng hóa đơn theo năm.

SELECT
   STRFTIME('%Y', InvoiceDate) InvoiceYear, 
   COUNT(InvoiceId) InvoiceCount
FROM
   invoices
GROUP BY
   STRFTIME('%Y', InvoiceDate)
ORDER BY
   InvoiceYear;Code language: SQL (Structured Query Language) (sql)

Đây là kết quả:

Trong ví dụ này:

  • Hàm STRFTIME('%Y', InvoiceDate) trả về một năm từ một chuỗi ngày.
  • GROUP BY điều khoản nhóm các hóa đơn theo năm.
  • Hàm COUNT() trả về số lượng hóa đơn trong mỗi năm (hoặc nhóm).

Trong hướng dẫn này, bạn đã học cách sử dụng SQLite GROUP BY mệnh đề để nhóm các hàng thành một tập hợp các hàng tóm tắt.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhóm SQLite theo / đếm giờ, ngày, tuần, năm

  2. Khi nào phương thức SQLiteOpenHelper onCreate được gọi?

  3. Lấy ID của một bản ghi mới được chèn vào cơ sở dữ liệu từ Uri trả về

  4. Hành vi của Android SQLite Journal đã thay đổi?

  5. Cách định dạng ngày giờ trong SQLite