GROUP BY, nhóm kết quả trả về dựa vào giá trị của cột được nhóm.
GROUP BY thường được sử dụng trong các truy vấn đòi hỏi tính toán, hiển thị theo nhóm.
Ví dụ: sử dụng câu lệnh Join để nối hai bảng Orders và Order Details trong database NorthWind. Kết quả của truy vấn là Orders , ProductId , UniPrice và Quanlity của từng Product. Sắp xếp theo Orders ID.
Use northwind;
GO
SELECT Orders.OrderID,
[Order Details].ProductID,
[Order Details].UnitPrice,
[Order Details].Quantity
FROM Orders
JOIN [Order Details]
ON Orders.OrderID = [Order Details].OrderID
ORDER BY Orders.OrderID
Kết quả của truy vấn:
Bạn thấy ở những truy vấn này, bạn có thể nhóm kết quả trả về thành từng nhóm các Order theo OrderID.
Sau khi nhóm xong, bạn có thể trả lời những câu hỏi như là:
Tổng giá trị của Order đó là bao nhiêu?
Tổng số lượng sản phẩm cho từng Order là bao nhiêu? Ví dụ, với OrderID 10248, ta thấy tổng số lượng hàng hóa là 12+10+5 = 27.
Giá trị trung bình từng món hàng của Order là bao nhiêu?
Ví dụ 2: Tính tổng số lượng hàng hóa của từng hóa đơn
Use northwind;
GO
SELECT Orders.OrderID,
Sum([Order Details].Quantity) As 'Tổng Số lượng hàng hóa'
FROM Orders
JOIN [Order Details]
ON Orders.OrderID = [Order Details].OrderID
GROUP BY Orders.OrderID
Với Order có OrderId = 10248, ta thấy số lượng hàng hóa là 27. Phù hợp với tính toán ở ví dụ 1.
Ví dụ 3: Tính tổng giá trị của từng hóa đơn, biết rằng, giá trị một mặt hàng = UnitPrice * Quanlity.
Use northwind;
GO
SELECT Orders.OrderID,
Sum([Order Details].Quantity * [Order Details].UnitPrice) As
'Tổng Giá Trị'
FROM Orders
JOIN [Order Details]
ON Orders.OrderID = [Order Details].OrderID
GROUP BY Orders.OrderID
Tài liệu tham khảo: http://www.w3schools.com/sql/sql_groupby.asp
Bạn có thể tham khảo cách cài đặt database northwind tại đây:
http://hocdai.com/sql-can-ban/cai-dat-sql/cai-dat-database-northwind