عبارت HAVING

Wiki

چون که عبارت WHERE نمی تواند به همراه توابع aggregate استفاده شود عبارت HAVING در SQL به همراه توابع aggregate آورده می شود.

فرم عبارت 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

مثال:

Wiki

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

O_Id OrderDate OrderPrice Customer
1 2008/11/12 1000 Hansen
2 2008/10/23 1600 Nilsen
3 2008/09/02 700 Hansen
4 2008/09/03 300 Hansen
5 2008/08/30 2000 Jensen
6 2008/10/04 100 Nilsen

می خواهیم مشتریانی که جمع سفارش آنها کمتر از 2000 است را پیدا کنیم.

از دستور زیر استفاده می کنیم:

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

نتیجه به شکل زیر خواهد بود:

Customer SUM(OrderPrice)
Nilsen 1700

می خواهیم اگر مشتریان "Hansen" یا "Jensen" جمع سفارش بیشتر از 1500 دارند را نشان دهد.

یک عبارت WHERE به دستور SQL اضافه می شود.

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

جدول نتیجه به شکل زیر خواهد بود:

Customer SUM(OrderPrice)
Hansen 2000
Jensen 2000

برای مشاهده فیلم های آموزشی مقدماتی تا پیشرفته پایگاه دادهSQLServer کلیک کنید.

READ MORE