Mệnh đề HAVING trong SQL Server có thể được xem là một sự thay thế cho WHERE. Nguyên nhân vì sao? Ý nghĩa và cú pháp sử dụng của HAVING như thế nào? Hãy xem tiếp ngay dưới đây.
Cú pháp mệnh đề HAVING trong SQL Server
Tên biến hoặc giá trị biến
ham_tong
Có thể là các hàm như SUM, COUNT, MIN, MAX hoặc AVG.
bieuthuc1, bieuthuc2, … bieuthuc_n
Biểu thức không nằm bên trong hàm tổng và phải nằm trong mệnh đề GROUP BY.
WHERE dieukien
Tùy chọn. Các điều kiện mà bản ghi phải đáp ứng để được chọn.
HAVING dieukien_having
Đây là điều kiện thêm chỉ áp dụng với kết quả tổng để giới hạn các nhóm của những hàng được trả về. Chỉ các nhóm mà điều kiện được đánh giá là TRUE mới nằm trong bộ kết quả.
Ví dụ – dùng hàm SUM
SELECT bophan, SUM (soluong) AS “Tong so luong”
FROM sanpham
GROUP BY bophan
HAVING SUM (soluong) > 100;
Ví dụ về mệnh đề HAVING ở trên dùng hàm SUM để trả về tên của bộ phận và tổng số lượng (trong bộ phận liên quan). Mệnh đề HAVING sẽ lọc kết quả để chỉ các bộ phận có số lượng lớn hơn 100 được trả về.
Ví dụ – dùng hàm COUNT
SELECT thanhpho, COUNT (*) AS “So nhanvien”
FROM nhanvien
WHERE bang = ‘California’
GROUP BY thanhpho
HAVING COUNT (*) > 20;
Ví dụ này trả về thành phố và số nhân viên (ở thành phố đó) hiện đang ở bang California. Mệnh đề HAVING sẽ lọc để chỉ trả về các thành phố có nhiều hơn 20 nhân viên.
Ví dụ – dùng hàm MIN
SELECT bophan, MIN (luong) AS “Luong thap nhat”
FROM nhanvien
GROUP BY bophan
HAVING MIN (luong) >= 50000;
Ở ví dụ này, kết quả trả về là tên của mỗi bộ phận và số lương tối thiểu trong từng bộ phận. Mệnh đề HAVING sẽ chỉ trả về các bộ phận có lương tối thiểu lớn hơn hoặc bằng $50.000.
Ví dụ – dùng hàm MAX
SELECT ho, MAX (luong) AS “Luong cao nhat”
FROM nhanvien
GROUP BY bophan
HAVING MAX (luong) > 34000;
Trong ví dụ cuối cùng này, kết quả trả về là họ của nhân viên và số lương tối đa cho giá trị họ đó. Mệnh đề HAVING giới hạn chỉ trả về các giá trị họ có lương tối đa lớn hơn $34.000.
Ví dụ HAVING
Để thực hiện ví dụ này, bạn cần nhập cơ sở dữ liệu mẫu Northwind vào SQL Server Management Studio. Hãy xem bài viết hướng dẫn ngay dưới đây:
Câu lệnh SQL dưới đây sẽ liệt kê số lượng khách hàng trong mỗi quốc gia. Chỉ bao gồm các quốc gia có nhiều hơn 5 khách hàng:
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID) > 5;
Câu lệnh SQL dưới đây sẽ liệt kê số lượng khách hàng trong mỗi quốc gia, sắp xếp từ cao đến thấp. Chỉ bao gồm các quốc gia có nhiều hơn 5 khách hàng:
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID) > 5
ORDER BY COUNT(CustomerID) DESC;
Kết quả tương tự ví dụ trên nhưng lúc này, thứ tự các cột đã được sắp xếp từ cao đến thấp.
Ví dụ HAVING khác
Câu lệnh SQL dưới đây sẽ liệt kê danh sách có nhiều hơn 10 đơn đặt hàng:
SELECT Employees.LastName, COUNT(Orders.OrderID) AS NumberOfOrdersFROM (OrdersINNER JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID)GROUP BY LastNameHAVING COUNT(Orders.OrderID) > 10;
Câu lệnh SQL dưới đây sẽ liệt kê nếu nhân viên có tên “Davolio” hoặc “Fuller” có nhiều hơn 25 đơn đặt hàng:
SELECT Employees.LastName, COUNT(Orders.OrderID) AS NumberOfOrders
FROM Orders
INNER JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID
WHERE LastName = ‘Davolio’ OR LastName = ‘Fuller’
GROUP BY LastName
HAVING COUNT(Orders.OrderID) > 25;
Như vậy, HAVING gần như tương tự với WHERE nhưng HAVING có thể dùng với các hàm tổng hợp còn WHERE thì không. Vì thế, chúng ta thường thấy HAVING được sử dụng cùng với toán tử GROUP BY.
Các tiện ích nổi bật của dịch vụ Làm Website Bán Hàng trọn gói tại ATPWeb:
- Website bán hàng ATPWeb giúp tối ưu hiệu quả SEO: Giúp bạn có một Website chuẩn SEO, khách hàng có thể tìm bạn trên Google một cách dễ dàng nhất.
- 500+ giao diện Responsive đẹp mắt, tùy biến cao: Giúp bạn có một Website thân thiện, dù là bất cứ thiết bị nào Website sẽ cho họ một trải nghiệm mua hàng hấp dẫn.
- Website tốc độ cao và băng thông không giới hạn: Giúp bạn có một Website tốc độ cao, khách hàng của bạn sẽ được trải nghiệm tốc độ load của một trang báo.
- Dịch vụ cài đặt dễ dàng và nhanh chóng.
- Tiết kiệm chi phí: Khi sử dụng dịch vụ thiết kế web trọn gói của ATPWeb bạn sẽ nhận được nhiều ưu đãi như:Kho bài viết, tài liệu, cẩm nang và khóa học miễn phí, khuyến mãi tùy theo từng gói dịch vụ, miễn phí các dịch vụ phát sinh và nhiều lợi ích khác.
- An toàn, bảo mật tuyệt đối: Website của bạn sẽ được được bảo vệ tuyệt đối với hàng rào “https://” và “SSL” tiêu chuẩn quốc tế giúp tránh được sự tấn công của virus, hacker.
- Hỗ trợ tư vấn Marketing & bán hàng: Cung cấp cho Khách hàng những tư duy, kiến thức về Marketing và cách kinh doanh ngay trên Website.
Hy vọng rằng bài viết trên đã giúp các bạn biết thêm nhiều kiến thức hữu ích.
Nếu như bạn đang có nhu cầu xây dựng một Website phù hợp với thương hiệu của mình, nhưng vẫn chưa tìm được giải pháp tối ưu nhất thì hãy liên hệ ngay với chúng tôi trong hôm nay để được tư vấn miễn phí nhé!
THÔNG TIN LIÊN HỆ
- Website: https://phanmematp.vn/
- Youtube: ATP Software
- Group hỗ trợ: ATP Support – Tư Vấn và Hỗ Trợ khách hàng
- Fanpage: ATP Holdings – Giải pháp hỗ trợ doanh nghiệp