Nội dung chính
Mệnh đề GROUP BY là một lệnh SQL được sử dụng để nhóm các hàng có cùng một giá trị. Nó thường được sử dụng trong câu lệnh SELECT.
GROUP BY là mệnh đề tùy chọn và thường được sử dụng cùng với các hàm tổng hợp với mục đích tạo các báo cáo tóm tắt từ cơ sở dữ liệu. Hay nói cách khác, GROUP BY hỗ trợ tóm tắt dữ liệu từ cơ sở dữ liệu.
Các câu truy vấn có chứa mệnh đề GROUP BY được gọi là các truy vấn nhóm và chỉ trả về một hàng cho mỗi mục được nhóm
Hãy cùng xem xét cú pháp của GROUP BY:
Trong đó:
Để hiểu được ảnh hưởng của mệnh đề GROUP BY, trước tiên chúng ta thực hiện một truy vấn đơn giản là trả về tất cả các mục nhập giới tính từ bảng members:
Giả sử rằng chúng ta muốn hiển thị một giá trị duy nhất cho mỗi loại giới tính, sử dụng câu truy vấn sau :
Sau khi thực hiện câu truy vấn trên, kết quả sẽ trả về như sau:
Lưu ý là chỉ có hai kết quả được trả lại bởi vì chúng ta chỉ có hai loại giới tính là Male và Female. Mệnh đề GROUP BY đã nhóm tất cả các thành viên “Male” lại với nhau và trả về một hàng duy nhất. Điều này cũng được thực hiện tương tự với tất cả thành viên là “Female”.
Giả sử rằng chúng ta muốn lấy danh sách ID của tất cả các thể loại phim và năm phát hành tương ứng của chúng từ bảng movies. Thực hiện câu truy vấn sau:
Kết quả trên cho một số thông tin trùng lặp.
Khi thực hiện câu truy vấn trên cùng với GROUP BY:
GROUP BY hoạt động trên cả category_id và year_released để xác định hàng duy nhất trong ví dụ trên.
Nếu category_id giống nhau nhưng year_released khác nhau, thì mỗi hàng được coi là một hàng chứa thông tin duy nhất. Nếu category_id và year_released giống nhau cho nhiều hơn một hàng thì nó được xem là trùng lặp và chỉ hiển thị một hàng trong kết quả.
Giả sử chúng ta muốn biết tổng số nam và nữ trong cơ sở dữ liệu thì có thể thực hiện câu lệnh sau đây:
Chạy câu lệnh trên cho ra kết quả:
Kết quả trên được nhóm theo từ giá trị giới tính duy nhất và số lượng hàng trong nhóm được tính bằng hàm tổng hợp COUNT
Không phải trong trường hợp nào chúng ta cũng muốn nhóm tất cả các dữ liệu trong cùng một bảng. Sẽ có lúc chúng ta muốn giới hạn kết quả của mình theo một tiêu chí nhất định. Trong những trường hợp như vậy, chúng ta có thể sử dụng mệnh đề HAVING.
Giả sử rằng chúng ta muốn biết tất cả các năm phát hành cho một thể loại phim có ID là 8. Thực hiện câu lệnh sau:
Kết quả được hiển thị:
Lưu ý rằng ở đây chỉ những phim có category_id là 8 mới bị ảnh hưởng bởi mệnh đề GROUP BY.
Các bạn có thể tham khảo thêm các bài viết khác về cách sử dụng MySQL:
Hướng dẫn sử dụng câu lệnh SELECT trong MySQL qua các ví dụ
Hướng dẫn câu lệnh DELETE trong MySQL và ví dụ minh họa
Hướng dẫn câu lệnh UPDATE trong MySQL và các ví dụ
Nội dung liên quan