توابع درون ساخته SQL
دستور Group By :
در هنگام استفاده از برخی از توابع درون ساخته SQL که عمل محاسبه ( مثل مجموع و میانگین ) را بر روی داده ها انجام می دهند ، این مشکل وجود دارد که این توابع قادر به جدا کردن و متمایز کردن اطلاعات موجود در دو ستون نسبت به هم نیستند و نتایج محاسبات را به صورت کلی برای همه آنها در نظر می گیرند .
از دستور Group By برای دسته بندی یک ستون بر حسب مقادیر مشابه فیلدهای یک ستون دیگر استفاده می شود .
شکل کلی استفاده از این دستور به صورت زیر است :
Select نام ستون ۱ , Sum ( 2 نام ستون ) ّFrom نام جدول Group By نام ستون ۱ ;
مثال : فرض کنید جدولی به صورت زیر برای نمرات ۲ دانشجو داریم :
| Class Table | |
| Name | Grade |
| Ali Ahmadi | ۱۸ |
| Reza Hoseini | ۱۷ |
| Ali Ahmadi | ۲۰ |
| Reza Hoseini | ۱۳ |
در صورت عدم استفاده از دستور Group By در تابع Sum خروجی زیر را خواهیم داشت :
| مثال | |||
| Select Sum ( Grade ) As مجموع نمرات From Class ; |
کد | ||
|
خروجی | ||
– مسلما خروجی فوق مورد نظر برنامه ساز نیست . می توان با استفاده از دستور Group By ، مجموع نمرات را برای دانشجویان بر حسب ستون Name به صورت جدا محاسبه کرد و به صورت زیر نمایش داد :
| مثال | |||||||
| Select Name ,Sum ( Grade ) As مجموع نمرات From Class Group By Name ; |
کد | ||||||
|
خروجی | ||||||
مثال ۲ : از جدول Students و Selection مجموع نمرات هر دانشجو را به همراه نام و نام خانوادگی ، که بر حسب نام خانوادگی مرتب شده باشد نمایش دهید :
| Student Table | |||||
| Student ID | Name | Family | Major | City | Grade |
| ۴۱۲۵۲۲۱۴ | Ahmad | Rezaee | Hard Ware | Tehran | ۱۸ |
| ۱۰۷۲۴۱۱۳ | Ehsan | Amiri | Soft Ware | Karaj | ۱۴ |
| ۱۰۲۵۴۸۶۱ | Zahra | Hosini | Hard Ware | Tehran | ۱۷ |
| ۲۷۳۶۵۱۸۷ | Sahar | Ahmadi | Soft Ware | Bam | ۱۶ |
| ۳۵۶۵۴۴۱۵ | Hesam | Razavi | Soft Ware | Tehran | ۱۹ |
| Selection Table | ||||
| Student ID | Course ID | Term | Year | Grade |
| ۴۱۲۵۲۲۱۴ | ۱۰۱۱ | ۲ | ۸۵ – ۸۶ | ۱۶ |
| ۱۰۷۲۴۱۱۳ | ۱۰۱۱ | ۲ | ۸۵ – ۸۶ | ۱۴ |
| ۴۱۲۵۲۲۱۴ | ۱۰۱۲ | ۱ | ۸۵ – ۸۶ | ۱۷ |
| ۱۰۷۲۴۱۱۳ | ۱۰۱۲ | ۱ | ۸۵ – ۸۶ | ۱۱ |
| ۱۰۲۵۴۸۶۱ | ۱۰۱۳ | ۲ | ۸۵ – ۸۶ | ۱۳ |
| ۱۰۲۵۴۸۶۱ | ۱۰۱۱ | ۲ | ۸۴ – ۸۵ | ۸ |
| ۲۷۳۶۵۱۸۷ | ۱۰۱۲ | ۱ | ۸۴ – ۸۵ | ۱۹ |
| ۲۷۳۶۵۱۸۷ | ۱۰۱۳ | ۱ | ۸۴ – ۸۵ | ۱۶ |
| ۳۵۶۵۴۴۱۵ | ۱۰۱۱ | ۲ | ۸۴ – ۸۵ | ۹ |
| ۳۵۶۵۴۴۱۵ | ۱۰۱۳ | ۲ | ۸۴ – ۸۵ | ۱۷ |
| مثال | |||||||||||||||||||
| Select Name , Family , Sum ( Selection.Grade ) As مجموع نمرات From Students , Selection Where Students.Student ID = Selection.Student ID Group By Name , Family Order By Family; |
کد | ||||||||||||||||||
|
خروجی | ||||||||||||||||||
