دستور HAVING

فیلتر کردن گروه‌ها بعد از GROUP BY با دستور HAVING.

HAVING چیست؟

HAVING برای فیلتر کردن گروه‌ها بعد از GROUP BY استفاده می‌شود. تفاوت آن با WHERE این است که WHERE روی رکوردهای منفرد اعمال می‌شود، اما HAVING روی نتایج تجمیعی.

WHERE vs HAVING

ویژگیWHEREHAVING
اعمال رویردیف‌های منفردگروه‌ها
توابع تجمیعی✗ نمی‌تواند استفاده کند✓ می‌تواند استفاده کند
زمان اعمالقبل از 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 است.

ابزارهای مرتبط