دستور HAVING
فیلتر کردن گروهها بعد از GROUP BY با دستور HAVING.
HAVING چیست؟
HAVING برای فیلتر کردن گروهها بعد از GROUP BY استفاده میشود. تفاوت آن با WHERE این است که WHERE روی رکوردهای منفرد اعمال میشود، اما HAVING روی نتایج تجمیعی.
WHERE vs HAVING
| ویژگی | WHERE | HAVING |
|---|---|---|
| اعمال روی | ردیفهای منفرد | گروهها |
| توابع تجمیعی | ✗ نمیتواند استفاده کند | ✓ میتواند استفاده کند |
| زمان اعمال | قبل از GROUP BY | بعد از GROUP BY |
مثال: شهرهایی با بیش از ۱ دانشآموز
SELECT city, COUNT(*) AS student_count
FROM students
GROUP BY city
HAVING COUNT(*) > 1;
مثال: میانگین نمره بالای ۱۶
SELECT subject, AVG(score) AS avg_score
FROM scores
GROUP BY subject
HAVING AVG(score) > 16;
ترتیب اجرا: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY
این مبحث بخشی از دوره آموزش کامل SQL است.