Mệnh đề GROUP BY trong SQL được sử dụng để nhóm các hàng trong kết quả truy vấn dựa trên các giá trị giống nhau trong một hoặc nhiều cột. Sau đó, bạn có thể thực hiện các phép tính tổng hợp (aggregate functions) trên các nhóm này, chẳng hạn như tính tổng, trung bình, đếm, v.v.
Cú pháp:
SELECT column_name(s), <aggregate_function>(<column_name>) FROM table_name WHERE condition GROUP BY column_name(s) ORDER BY column_name(s);
Mệnh đề Group by thường được sử dụng với các hàm (COUNT(), MAX(), MIN(), SUM(), AVG()) để nhóm kết quả của các cột.
Giải thích:
- SELECT: Chỉ định các cột bạn muốn hiển thị trong kết quả.
- <column_name>: Tên của các cột muốn hiển thị hoặc sử dụng trong phép tính tổng hợp.
- <aggregate_function>(<column_name>): Phép tính tổng hợp được thực hiện trên các nhóm. Ví dụ: SUM, AVG, COUNT, MIN, MAX.
- FROM: Chỉ định bảng chứa dữ liệu.
- [WHERE <condition>]: Điều kiện lọc dữ liệu trước khi nhóm (tùy chọn).
- GROUP BY: Chỉ định các cột được sử dụng để nhóm dữ liệu.
Ví dụ:
--Tính tổng số lượng đơn hàng cho mỗi khách hàng: SELECT CustomerID, SUM(Quantity) AS TotalOrders FROM Orders GROUP BY CustomerID; --Tính trung bình điểm thi của mỗi môn học: SELECT Subject, AVG(Score) AS AverageScore FROM ExamResults GROUP BY Subject; --Tìm kiếm tên sản phẩm và số lượng sản phẩm bán được theo từng danh mục: SELECT CategoryName, COUNT(*) AS NumberOfProductsSold FROM OrderItems GROUP BY CategoryName;
Lưu ý:
- Các cột được sử dụng trong mệnh đề GROUP BY phải có trong mệnh đề SELECT trừ khi bạn sử dụng aggregate function có kèm theo distinct keyword (ví dụ: COUNT(DISTINCT column_name)).
- Bạn có thể sử dụng nhiều cột trong mệnh đề GROUP BY để nhóm dữ liệu theo nhiều tiêu chí.