توابع درون ساخته 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 ;
کد
Name مجموع نمرات
Ali Ahmadi ۳۸
Reaz Hoseini ۳۰
خروجی

مثال ۲ : از جدول 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;
کد
Name Family مجموع نمرات
Sahar Ahmadi ۳۵
Ehsan Amiri ۲۵
Zahra Hoseini ۲۱
Hesam Razavi ۲۶
Ahmad Rezaee ۳۳
خروجی