Mệnh đề HAVING trong SQL được sử dụng để lọc các nhóm được tạo bởi mệnh đề GROUP BY. Nó cho phép bạn đặt điều kiện trên các nhóm thay vì các hàng riêng lẻ.
Cú pháp:
SELECT <column_name>, <aggregate_function>(<column_name>) FROM <table_name> [WHERE <condition>] GROUP BY <column_name1>, <column_name2>, ... HAVING <condition>;
Giải thích:
- SELECT, FROM, WHERE, GROUP BY: Giống như trong mệnh đề GROUP BY.
- <aggregate_function>(<column_name>): Phép tính tổng hợp được thực hiện trên các nhóm.
- HAVING <condition>: Điều kiện để lọc các nhóm.
Lưu ý:
- Mệnh đề HAVING luôn được sử dụng sau mệnh đề GROUP BY.
- Điều kiện trong mệnh đề HAVING có thể sử dụng các phép so sánh, toán tử logic và các phép toán trên các giá trị trả về của các phép tính tổng hợp.
Ví dụ:
--Tính tổng doanh thu theo từng tháng, chỉ hiển thị các tháng có tổng doanh thu trên 1 triệu: SELECT MONTH(OrderDate) AS OrderMonth, SUM(Total) AS TotalRevenue FROM Orders GROUP BY MONTH(OrderDate) HAVING SUM(Total) > 1000000; --Tính trung bình điểm thi của mỗi môn học, chỉ hiển thị các môn có điểm trung bình trên 8: SELECT Subject, AVG(Score) AS AverageScore FROM ExamResults GROUP BY Subject HAVING AVG(Score) > 8; --Tìm kiếm danh mục sản phẩm và tổng số lượng sản phẩm bán được theo từng danh mục, chỉ hiển thị các danh mục có trên 10 sản phẩm được bán: SELECT CategoryName, COUNT(*) AS NumberOfProductsSold FROM OrderItems GROUP BY CategoryName HAVING COUNT(*) > 10;