دستور group by در مای اسکیول به شما کمک میکند نتایج select را در دسته بندی های خاصی که میتوانید با استفاده از توابع غول اسا اعمال کنید نمایش دهد .
بطور مثال جدول زیر را در نظر بگرید .
# | paye | amount | subject |
1 | ma bell | 150 | price |
2 | reading r.r | 245.34 | price |
3 | ma bell | 200.33 | price |
4 | local utilities | 98 | price |
joes state $ dent | 150 | price | |
5 | cash | 25 | price |
6 | joans gas | 25.1 | price |
7 | abes cleaners | 24.35 | price |
8 | abes cleaners | 10.5 | price |
9 | cash | 60 | price |
10 | cash | 34 | price |
11 | local uilities | 87.5 | price |
12 | local uilities | 34 | price |
12 | local utilities | 15.75 | price |
دستور select زیر جمع کل مبلغ ها را نمایش میدهد.
SELECT SUM(paye);
SUM
- - - - - - - - - -
1159.87
همانطور که دیدید کوئری بالا جمع مقادیر ستون price برای تمامی افراد را محاسبه کرد.برای اینکه بتوان جمع مبالغ برای هر فرد را مشخص کرد از دستور GrOUP BY به شکل زیر استفاده میکنیم .
SELECT PAYEE,SUM(amount) FROM Checks GROUP BY Payee;
بعد از اجرا کوئری بالا نتیجه خروجی به شکل زیر خواهد بود
SUM | Payee |
34.849998 | abes cleaners |
119 | cash |
40.849998 | joans gas |
150 | joes stale $ dent |
219.5 | local utilities |
350.33002 | ma bell |
245.34 | readinf r.r |
نکته: در مثال بالا اگر از دستور GROUP By در کموئری خود استفاده نکنیم .و کوئری خود را به این شکل بنویسیسم .
SELECT Pyee,SUM(amount) FROM Checks
با پیغام خطای زیر روبه رو میشویم
Dynamic SQL Error SQL error code = -140 invalid column refrence
در اس کیو ال استفاده همزامان از ستون های عادی و نوابع غول آسا مانند SUM در بخش SELECT دارای محدودیت هایی استع که خطای بالا به همین دلیل است .استفاده از ستون عادی و توابع غول اسا تنها در شرایطی مجاز است که نام ستون عادی در بخش GROUP BY نیز ذکر شود.در این صورت تابع غول آسا بر روی گروه های سطرهایی که مقدار ستون مزبور در انها با یکدیگر مساوی است اجرا میشود و مقادار مشترک ستون همراه با نتیجه تابع غول اسا قابل نمایش خواهد بود.
در کوئری زیر غیر از مجموع مبالغ تعداد مبالغ پرداختی مربوط به هرکدام از افراد را نیز نمایش میدهد.
SELECT payee,SUM(amount) , COUNT(payee) FROM Checks GROUP BY PAYEE
COUNT | SUM | Payee |
2 | 34.849998 | abes cleaners |
3 | 119 | cash |
2 | 40.849998 | joans gas |
1 | 150 | joes stale $ dent |
3 | 219.5 | local utilities |
2 | 350.33002 | ma bell |
1 | 245.34 | readinf r.r |
همانطور که میبینید در کوئری های خود میتواند از چندین تابع غول آسا بصورت همزمان استفاده کرد.