Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> SQL

SQL GROUP BY: Hướng dẫn đầy đủ

Câu lệnh SQL GROUP BY xuất hiện trong hàm tổng hợp. Nó dùng để gom nhóm dữ liệu bạn chọn từ truy vấn theo một cột cụ thể. Bạn có thể chỉ định nhiều cột sẽ được gom nhóm bằng câu lệnh GROUP BY.

Khi làm việc với hàm tổng hợp trong SQL, thường cần gom nhóm các hàng lại theo giá trị cột chung.

Ví dụ: bạn muốn lấy danh sách tên chi nhánh doanh nghiệp. Bên cạnh đó muốn thấy số nhân viên làm việc cho các chi nhánh đó. Bạn cần dùng hàm tổng hợp và gom nhóm theo tên chi nhánh.

Đó là lúc mệnh đề SQL GROUP BY xuất hiện. Trong hướng dẫn này, chúng ta sẽ thảo luận cách dùng mệnh đề GROUP BY.

Ôn tập hàm tổng hợp

Thường khi làm việc với cơ sở dữ liệu, bạn không muốn xem dữ liệu thực tế trong cơ sở dữ liệu. Thay vào đó, bạn muốn thông tin về dữ liệu. Ví dụ: số sản phẩm độc nhất doanh nghiệp bán, hoặc điểm cao nhất trên bảng xếp hạng.

Có nhiều hàm tích hợp sẵn trong SQL cho phép lấy thông tin này. Chúng gọi là hàm tổng hợp (aggregate functions).

Ví dụ: muốn biết bao nhiêu nhân viên là Sales Associate, dùng hàm COUNT. Hàm COUNT đếm và trả về số hàng đáp ứng tiêu chí cụ thể. Các hàm tổng hợp khác: SUM, AVG, MIN, MAX.

Nếu muốn tìm hiểu thêm về hàm tổng hợp, đọc hướng dẫn SQL aggregate functions của chúng tôi.

SQL GROUP BY

Mệnh đề SQL GROUP BY gom nhóm các hàng. GROUP BY thường dùng trong truy vấn dùng hàm tổng hợp như MIN và MAX. Câu lệnh GROUP BY nói cho SQL biết cách biểu diễn thông tin trong bất kỳ cột không phải tổng hợp nào bạn đã truy vấn.

Cú pháp câu lệnh GROUP BY:

SELECT COUNT(ten_cot1), ten_cot2 FROM ten_bang1 GROUP BY ten_cot2;

Chúng ta dùng hàm tổng hợp trong truy vấn và chỉ định thêm một cột.

Trong bất kỳ truy vấn nào như vậy, chúng ta cần dùng câu lệnh GROUP BY. Câu lệnh GROUP BY nói cho SQL cách hiển thị dữ liệu chi nhánh dù nó nằm ngoài hàm tổng hợp. Bạn cần gom nhóm theo bảng không nằm trong hàm tổng hợp.

Mệnh đề GROUP BY chỉ dùng trong câu lệnh SQL SELECT.

Hãy xem ví dụ GROUP BY trong SQL.

Ví dụ GROUP BY SQL

Giả sử muốn tìm tổng số nhân viên với mỗi chức danh được giao cho lực lượng lao động. Nghĩa là: bao nhiêu Sales Associate, bao nhiêu Marketing Director, v.v.

Dùng truy vấn sau:

SELECT title, COUNT(title) FROM employees GROUP BY title;

Truy vấn trả về nhiều bản ghi:

titlecount
Senior Sales Associate1
Sales Associate4
Vice President of Sales1
Marketing Director1

(4 hàng)

Truy vấn GROUP BY trả về danh sách chức danh duy nhất do nhân viên giữ. Chúng ta thấy số nhân viên giữ chức danh đó bên cạnh mỗi chức danh.

Khi nào nên dùng GROUP BY trong SQL?

Mệnh đề GROUP BY chỉ cần thiết khi bạn muốn lấy thêm thông tin hơn những gì hàm tổng hợp trả về.

Nếu muốn biết số khách hàng bạn có, chỉ cần chạy truy vấn thường. Ví dụ truy vấn trả về thông tin này:

SELECT COUNT(name) FROM customers;

Kết quả:

count
7

(1 hàng)

Nhưng nếu muốn biết mỗi gói trung thành (loyalty plan) có bao nhiêu khách hàng, bạn cần dùng GROUP BY. Ví dụ truy vấn lấy danh sách gói trung thành và số khách hàng trên mỗi gói:

SELECT loyalty_plan, COUNT(loyalty_plan) FROM customers GROUP BY loyalty_plan;

Kết quả:

loyalty_plancount
Gold1
None3
Silver1
Bronze2

(4 hàng)

SQL GROUP BY nhiều cột

Nếu muốn, có thể thực hiện GROUP BY trên nhiều cột. Ví dụ: muốn lấy danh sách số nhân viên tại mỗi chi nhánh với chức danh cụ thể. Truy xuất bằng truy vấn:

SELECT branch, title, COUNT(title) FROM employees GROUP BY branch, title;

Kết quả:

branchtitlecount
StamfordSales Associate1
AlbanyVice President of Sales1
San FranciscoSales Associate1
San FranciscoSenior Sales Associate1
AlbanyMarketing Director1
BostonSales Associate2

(6 hàng)

Truy vấn tạo danh sách chức danh do mỗi nhân viên giữ. Chúng ta thấy số người giữ chức danh đó. Dữ liệu được gom nhóm theo chi nhánh và chức danh.

Kết luận

Mệnh đề SQL GROUP BY bắt buộc trong mọi câu lệnh dùng hàm tổng hợp và truy vấn thêm bảng. Bạn nên gom nhóm theo cột không được nhắc đến trong hàm tổng hợp.

Bạn đang tìm thử thách? Viết câu lệnh tìm số nhân viên làm việc tại mỗi chi nhánh.

Bảng tên employees và cột chứa tên chi nhánh là branch. Quay lại hướng dẫn trên và xem truy vấn của bạn có hợp lý dựa trên những gì đã thảo luận.

Chúng tôi đã viết hướng dẫn hoàn chỉnh về how to learn SQL. Hướng dẫn phù hợp cho người mới bắt đầu và những người đã trên đường làm chủ SQL. Xem tại trang How to Learn SQL.