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 BY
và INNER 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
, MIN
và AVG
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 MediaTypeId
và GenreId
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.