GROUP BY là gì? Cách dùng câu lệnh GROUP BY trong SQL như thế nào? Bài viết dưới đây sẽ giúp bạn hiểu rõ và chi tiết hơn về mệnh đề này nhé!
Contents
Mệnh đề GROUP BY trong SQL
Câu lệnh GROUP BY trong SQL cho phép người dùng có thể sắp xếp các hàng truy vấn theo nhóm. Các nhóm này được xác định bởi các cột mà chúng ta chỉ định trong câu lệnh GROUP BY. Điều này có nghĩa là nếu một cột cụ thể của các dòng khác nhau mà có giá trị giống nhau thì chúng sẽ được gộp lại và sắp xếp thành một nhóm.
Mệnh đề GROUP BY trong SQL thường được kết hợp với các hàm khác như HAVING, COUNT(), AVG(), MAX(), MIN() để nhóm kết quả trong một cột hoặc một số cột.
Cú pháp GROUP BY:
![Cú pháp GROUP BY](https://supperclean.vn/wp-content/uploads/2023/04/group-by-trong-sql-5.jpg)
Ví dụ minh họa:
![Ví dụ về GROUP BY](https://supperclean.vn/wp-content/uploads/2023/04/group-by-trong-sql-1.jpg)
Ta thu được kết quả như sau:
![Kết quả thu được sau khi sử dụng cú pháp](https://supperclean.vn/wp-content/uploads/2023/04/group-by-trong-sql-15.jpg)
Trong ví dụ này, mình đã truy xuất thông tin của các khách hàng có id 1, 2 và năm đặt hàng của họ. Cụ thể, khách hàng có id 1 đã có 1 đơn hàng trong năm 2016 và 2 đơn hàng trong năm 2018. Tương tự, khách hàng có id2 đã có 2 đơn đặt hàng trong năm 2017 và 1 đơn đặt hàng năm 2018.
Ta tiếp tục thêm câu lệnh GROUP BY để truy vấn:
![Truy vấn dữ liệu bằng cú pháp GROUP BY](https://supperclean.vn/wp-content/uploads/2023/04/group-by-trong-sql-9.jpg)
Và thu được kết quả là:
![Kết quả thu được](https://supperclean.vn/wp-content/uploads/2023/04/group-by-trong-sql-2.jpg)
Câu lệnh GROUP BY đã sắp xếp 3 bản ghi của khách hàng id 1 thành 2 nhóm và 3 bản ghi của khách hàng id 2 thành 2 nhóm. Tạo thành bảng ghi mới, là sự kết hợp duy nhất gồm có id khách hàng và năm đặt hàng tương ứng của họ.
Bởi vậy, về chức năng, GROUP BY khi truy vấn tạo ra kết quả khá tương tự như khi truy vấn với mệnh đề DISTINCT.
Ví dụ minh họa:
![GROUP BY truy vấn kết quả khá giống như câu lệnh DISTINCT](https://supperclean.vn/wp-content/uploads/2023/04/group-by-trong-sql-18.jpg)
Và đây là kết quả thu được:
![Kết quả thu được](https://supperclean.vn/wp-content/uploads/2023/04/group-by-trong-sql-7.jpg)
Ví dụ minh họa về GROUP BY với các hàm khác trong SQL
Ví dụ về GROUP BY + COUNT()
Ví dụ: Truy vấn về số lượng khách trong mỗi thành phố
![Sử dụng câu lệnh GROUP BY kết hợp với COUNT](https://supperclean.vn/wp-content/uploads/2023/04/group-by-trong-sql-16.jpg)
Và thu được kết quả như sau:
![Kết quả sử dụng câu lệnh GROUP BY kết hợp với COUNT](https://supperclean.vn/wp-content/uploads/2023/04/group-by-trong-sql-17.jpg)
=> Trong ví dụ này, GROUP BY có nhiệm vụ truy vấn nhóm các hàng khách lại với nhau theo từng thành phố. COUNT() có nhiệm vụ trả kết quả về số lượng cách hàng khách trong mỗi thành phố.
Ví dụ về GROUP BY + HAVING
Ví dụ: Truy vấn các khách hàng đặt ít nhất 2 đơn hàng trong một năm:
![Ví dụ kết hợp GROUP BY và HAVING](https://supperclean.vn/wp-content/uploads/2023/04/group-by-trong-sql-6.jpg)
Và đây là kết quả:
![Kết quả kết hợp GROUP BY và HAVING](https://supperclean.vn/wp-content/uploads/2023/04/group-by-trong-sql-12.jpg)
=> Lý giải về ví dụ này:
- Câu lệnh GROUP BY trong SQL sẽ nhóm các đơn đặt hàng theo tên id khách hàng và năm đặt hàng. Hàm COUNT() có nhiệm vụ trả kết quả về số lượng đơn đặt hàng của mỗi khách hàng được đặt trong 1 năm.
- Hàm HAVING có nhiệm vụ lọc các khách hàng có số lượng đơn hàng đặt ít hơn 2.
XEM THÊM: Visual Studio Code là gì? Những ưu điểm vượt trội của Visual Studio Code
Ví dụ hàm GROUP BY với 1 bảng
Ta có bảng khách hàng với các cột sau:
![Bảng khách hàng](https://supperclean.vn/wp-content/uploads/2023/04/group-by-trong-sql-3.jpg)
Yêu cầu: Thực hiện truy vấn số lượng khách hàng trong mỗi thành phố và sắp xếp theo thứ tự từ A đến Z.
![Truy vấn với câu lệnh GROUP BY](https://supperclean.vn/wp-content/uploads/2023/04/group-by-trong-sql-10.jpg)
Và thu được kết quả như sau:
![Kết quả thu được truy vấn với câu lệnh GROUP BY](https://supperclean.vn/wp-content/uploads/2023/04/group-by-trong-sql-8.jpg)
Ví dụ câu lệnh GROUP BY trong SQL với 2 bảng
Ta có bảng DatHang và NguoiGui như sau:
![Bảng đặt hàng](https://supperclean.vn/wp-content/uploads/2023/04/group-by-trong-sql-11.jpg)
![bảng người gửi](https://supperclean.vn/wp-content/uploads/2023/04/group-by-trong-sql-13.jpg)
Yêu cầu: Truy vấn số lượng đơn hàng được gửi bởi mỗi người gửi:
![Các câu lệnh truy vấn](https://supperclean.vn/wp-content/uploads/2023/04/group-by-trong-sql-14.jpg)
Và thu được kết quả như sau:
![Kết quả thu được](https://supperclean.vn/wp-content/uploads/2023/04/group-by-trong-sql-4.jpg)
Trên đây là bài viết chia sẻ về câu lệnh GROUP BY trong SQL, mong rằng sẽ mang đến cho bạn đọc nhiều thông tin hữu ích. Mọi ý kiến góp ý về bài viết xin vui lòng để lại bình luận bên dưới, chúng tôi luôn sẵn sàng đón nhận để hoàn hiện bài viết tốt nhất.