SQL HAVING Clause
زبان SQL وقتی بخوایم بعد از گروهبندی رکوردها رو فیلتر کنیم، از HAVING Clause استفاده میکنیم.
در واقع:
-
WHERE
برای فیلتر کردن رکوردها قبل از GROUP BY استفاده میشه. -
HAVING
برای فیلتر کردن نتایج بعد از GROUP BY استفاده میشه.
🔹 ساختار کلی
🔹 مثال ساده
جدول: Orders
order_id | customer_id | amount |
---|---|---|
1 | 1 | 500 |
2 | 2 | 300 |
3 | 1 | 200 |
4 | 3 | 400 |
5 | 2 | 100 |
کوئری:
📌 خروجی:
customer_id | total_amount |
---|---|
1 | 700 |
توضیح: فقط مشتریهایی نشون داده میشن که جمع سفارشهاشون بیشتر از 400 باشه.
🔹 ترکیب WHERE و HAVING
📌 توضیح:
-
WHERE amount > 100
→ فقط سفارشهایی که مبلغشون بالای 100 هست در نظر گرفته میشن. -
HAVING COUNT(order_id) >= 2
→ فقط مشتریهایی که حداقل 2 سفارش معتبر دارن نشون داده میشن.
🔹 مثال با چند شرط
📌 فقط مشتریهایی که میانگین سفارشهاشون بین 200 تا 600 باشه نمایش داده میشن.
✅ نکات مهم
-
HAVING
همیشه همراهGROUP BY
استفاده میشه (ولی میشه به تنهایی هم نوشت). -
برای فیلتر کردن توابع تجمیعی (
SUM
,COUNT
,AVG
, …) باید ازHAVING
استفاده کنید، نهWHERE
. -
ترتیب اجرا:
WHERE
→GROUP BY
→HAVING
→ORDER BY
.