Bài này cafedev chia sẻ cho ace về cách sử dụng GROUP BY, HAVING trong SQL để lấy ra dữ liệu theo ý muốn của mình.

Lưu ý: Các bạn tham khảo bài giới thiệu này để lấy dữ liệu mẫu, cấu trúc và chạy các ví dụ của toàn bộ series này nha. Khi bạn thực hành mà không tìm thấy kết quả và không xảy ra lỗi thì có thể dữ liệu của bạn không tồn tại, vì vậy, bạn có thể insert thêm data vào bảng và thực hành lại nha.

1. GROUP BY trong SQL

Câu lệnh GROUP BY nhóm các hàng có cùng giá trị thành các hàng tóm tắt, như “tìm số lượng khách hàng ở mỗi quốc gia”.

Câu lệnh GROUP BY thường được sử dụng với các hàm tổng hợp (COUNT, MAX, MIN, SUM, AVG) để nhóm tập hợp kết quả theo một hoặc nhiều cột.

Cú pháp

SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s); 

Ví dụ:

Cấu trúc các bản bạn tham khảo tạo đây.

  • Câu lệnh SQL sau liệt kê số lượng khách hàng ở mỗi quốc gia:
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country;
  • Câu lệnh SQL sau liệt kê số lượng khách hàng ở mỗi quốc gia, được sắp xếp từ cao đến thấp:
/*
Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
@author cafedevn
Contact: cafedevn@gmail.com
Fanpage: https://www.facebook.com/cafedevn
Group: https://www.facebook.com/groups/cafedev.vn/
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
Pinterest: https://www.pinterest.com/cafedevvn/
YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
*/

SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
ORDER BY COUNT(CustomerID) DESC;

Ví dụ: GROUP BY với JOIN

  • Câu lệnh SQL sau liệt kê số lượng đơn đặt hàng được gửi bởi mỗi người gửi hàng:
SELECT Shippers.ShipperName, COUNT(Orders.OrderID) AS NumberOfOrders FROM Orders
LEFT JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID
GROUP BY ShipperName;

Lưu ý: Các bạn tham khảo bài giới thiệu này để lấy dữ liệu mẫu và chạy các ví dụ của toàn bộ series này nha. Khi bạn thực hành mà không tìm thấy kết quả và không xảy ra lỗi thì có thể dữ liệu của bạn không tồn tại, vì vậy, bạn có thể insert thêm data vào bảng và thực hành lại nha.

Full series tự học SQL từ cơ bản tới nâng cao tại đây nha.

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

Chào thân ái và quyết thắng!

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!