Tìm hiểu về câu lệnh GROUP BY trong SQL chi tiết bạn nên biết

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é!

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
Cú pháp GROUP BY

Ví dụ minh họa:

Ví dụ về GROUP BY
Ví dụ về GROUP BY

Ta thu được kết quả như sau:

Kết quả thu được sau khi sử dụng cú pháp
Kết quả thu được sau khi sử dụng cú pháp

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
Truy vấn dữ liệu bằng cú pháp GROUP BY

Và thu được kết quả là:

Kết quả thu được
Kết quả thu được

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
GROUP BY truy vấn kết quả khá giống như câu lệnh DISTINCT

Và đây là kết quả thu được:

Kết quả thu được
Kết quả thu được

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
Sử dụng câu lệnh GROUP BY kết hợp với COUNT

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
Kết quả sử dụng câu lệnh GROUP BY kết hợp với COUNT

 

=> 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
Ví dụ kết hợp GROUP BY và HAVING

Và đây là kết quả:

Kết quả kết hợp GROUP BY và HAVING
Kết quả kết hợp GROUP BY và HAVING

=> 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
Bảng khách hàng

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
Truy vấn với câu lệnh GROUP BY

Và thu được kết quả như sau:

Kết quả thu được truy vấn với câu lệnh GROUP BY
Kết quả thu được truy vấn với câu lệnh GROUP BY

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
Bảng đặt hàng
bảng người gửi
bảng người gửi

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
Các câu lệnh truy vấn

Và thu được kết quả như sau: 

Kết quả thu được
Kết quả thu được

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. 

Rate this post

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *