فرض کنید جدولی به نام Students دارید که نام دانش آموز و نمره های او را نگهداری می کند. ممکن است هر دانش آموز چند رکورد داشته باشد، چون هر رکورد مربوط به یک درس یا آزمون است. هدف این است که نمره های هر دانش آموز جمع شوند و فقط افرادی در خروجی بمانند که مجموع نمره هایشان بیشتر از ۲۵ باشد.
ابتدا Group By رکوردها را بر اساس نام دانش آموز دسته بندی می کند. سپس تابع Sum نمره های هر دسته را جمع می زند. در پایان Having نتیجه جمع را بررسی می کند و گروه هایی را که شرط را ندارند کنار می گذارد. این نمونه نشان می دهد چرا Where جایگزین مناسبی برای شرط روی مجموع نیست.
SELECT Name, SUM(Grade) AS TotalGrades
FROM Students
GROUP BY Name
HAVING SUM(Grade) > 25
ORDER BY Name;
در این کوئری، عبارت SUM(Grade) مقدار تجمیعی هر گروه را تولید می کند و شرط Having فقط گروه هایی را نگه می دارد که مجموعشان از ۲۵ بیشتر باشد. مرتب سازی با Order By در انتهای کوئری انجام می شود تا نتیجه بر اساس نام نمایش داده شود.
نکته مثال: در این مثال به جای Having نمی توان شرط SUM(Grade) > 25 را در Where قرار داد، زیرا Where پیش از محاسبه گروه ها اجرا می شود. برای شرط گذاری بر روی مقدارهای محاسبه شده در هر گروه، از دستور Group By و جمله شرطی Having در جای درست استفاده کنید.