Câu lệnh HAVING trong SQL

Câu lệnh HAVING

Lý do thêm WHERE từ câu lệnh HAVING trong SQL là vì từ khóa WHERE không thể sử dụng cùng với hàm tổng hợp.

Cú pháp HAVING SQL

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value

Mô hình HAVING SQL

Chúng ta có bảng "Orders" sau:

O_Id OrderDate OrderPrice Customer
1 2008/12/29 1000 Bush
2 2008/11/23 1600 Carter
3 2008/10/05 700 Bush
4 2008/09/28 300 Bush
5 2008/08/06 2000 Adams
6 2008/07/21 100 Carter

Bây giờ, chúng ta muốn tìm kiếm khách hàng có tổng số tiền đơn hàng dưới 2000.

Chúng ta sử dụng câu lệnh SQL sau:

SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer
HAVING SUM(OrderPrice)<2000

Kết quả tập hợp tương tự:

Customer SUM(OrderPrice)
Carter 1700

Bây giờ chúng ta muốn tìm kiếm khách hàng "Bush" hoặc "Adams" có tổng số tiền đơn hàng vượt quá 1500.

Chúng ta đã thêm một WHERE từ điều kiện thông thường vào câu lệnh SQL:

SELECT Customer,SUM(OrderPrice) FROM Orders
WHERE Customer='Bush' OR Customer='Adams'
GROUP BY Customer
HAVING SUM(OrderPrice)>1500

Kết quả tập hợp:

Customer SUM(OrderPrice)
Bush 2000
Adams 2000