GROUP BY بهمراه توابع Aggregate (مانند count) برای محاسبه تابع مورد نظر برروی گروهی از نتایج query (نه تمام رکوردها) استفاده می شود.
فرض کنید که یک جدول داریم با نام order که سفارش های مشتریان (customer) را درون خود نگهداری می کند جدول order یک فیلد customer_id دارد که مشخص می کند هر رکورد سفارش متعلق به کدام فرد است، اگر query زیر را بروی جدول order اجرا کنیم:
select count(customer_id) from order
این query تعداد تمام سفارش ها برای تمام مشتریان را نمایش می دهد (تعداد رکوردهای جدول order). حالا اگر بخواهیم تعداد کل سفارش های هر مشتری به تفکیک را داشته باشیم باید از GROUP BY استفاده کنیم:
select customer_id , count(customer_id) as order_count from order
group by customer_id
خروجی این query تابع count را برروی رکوردهای با customer_id مشترک بصورت جدا جدا اجرا می کند و در نتیجه تعداد کل سفارش های هر مشتری به تفکیک نمایش می دهد.