۱۴۰۱/۱۲/۲۹

آموزش مای اسکیول GROUP BY

آموزش مای اسکیول GROUP BY ۱۳۹۸/۰۴/۲۶

دستور 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

همانطور که میبینید در کوئری های خود میتواند از چندین تابع غول آسا بصورت همزمان استفاده کرد.


رای :

مای اسکیول

GROUP BY

MYSQL

mysql

ارسال نظر
Copyright © All right reserved.