Mệnh đề HAVING trong SQL Server

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ả.

Mệnh đề HAVING trong SQL Server

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.

Mệnh đề Left Join trong SQL

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Ệ

0
Chia Sẻ
4
Lượt Xem

Bình luận về chủ đề post

ƯU ĐÃI CHO CÁ NHÂN KINH DOANH & DOANH NGHIỆP MÙA CÔ VI

*Áp dụng đến hết 31/5

GIẢM SỐC

Giải Pháp Kinh Doanh Đa kênh

TỚI 50%

Ngày
Giờ
Phút
Giây