SQL HAVING جمله

HAVING جملۀ

دلیل اضافه کردن جملۀ HAVING در SQL این است که کلید WHERE نمی‌تواند با تابع‌های مجموعه‌ای استفاده شود.

نحوه استفاده از SQL HAVING

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

مثال SQL HAVING

ما جدول "Orders" زیر را داریم:

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

حالا ما می‌خواهیم مشتریانی که مبلغ کل سفارشات آن‌ها کمتر از 2000 است را پیدا کنیم.

ما جملۀ SQL زیر را استفاده کرده‌ایم:

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

نتایج مشابه:

Customer SUM(OrderPrice)
Carter 1700

حالا ما می‌خواهیم مشتریان "Bush" یا "Adams" را پیدا کنیم که مبلغ کل سفارشات آن‌ها بیش از 1500 است.

ما یک جملۀ WHERE معمولی به جملۀ SQL خود اضافه کرده‌ایم:

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

نتایج:

Customer SUM(OrderPrice)
Bush 2000
Adams 2000