ٌٌٌٌٌٌWelcome

تاریخ : شنبه 1 فروردين 0
نویسنده : hamidrezakhouri

دستور Group By :

در هنگام استفاده از برخی از توابع درون ساخته SQL که عمل محاسبه ( مثل مجموع و ميانگين ) را بر روی داده ها انجام می دهند ، اين مشکل وجود دارد که اين توابع قادر به جدا کردن و متمايز کردن اطلاعات موجود در دو ستون نسبت به هم نيستند و نتايج محاسبات را به صورت کلی برای همه آنها در نظر می گيرند .
از دستور Group By برای دسته بندی يک ستون بر حسب مقادير مشابه فيلدهای يک ستون ديگر استفاده می شود .
شکل کلی استفاده از اين دستور به صورت زير است :

Select  نام ستون 1 , Sum ( 2 نام ستون )  ّFrom  نام جدول  Group By  نام ستون 1 ;

مثال : فرض کنيد جدولی به صورت زير برای نمرات 2 دانشجو داريم :

Class Table
Name Grade
Ali Ahmadi 18
Reza Hoseini 17
Ali Ahmadi 20
Reza Hoseini 13

در صورت عدم استفاده از دستور Group By در تابع Sum خروجی زير را خواهيم داشت :

مثال
Select Sum ( Grade ) As مجموع نمرات
From Class ;
کد
مجموع نمرات
68
خروجی

- مسلما خروجی فوق مورد نظر برنامه ساز نيست . می توان با استفاده از دستور Group By ، مجموع نمرات را برای دانشجويان بر حسب ستون Name به صورت جدا محاسبه کرد و به صورت زير نمايش داد :

مثال
Select Name ,Sum ( Grade ) As مجموع نمرات
From Class
Group By Name ;
کد
Name مجموع نمرات
Ali Ahmadi 38
Reaz Hoseini 30
خروجی

مثال 2 : از جدول Students و Selection مجموع نمرات هر دانشجو را به همراه نام و نام خانوادگی ، که بر حسب نام خانوادگی مرتب شده باشد نمايش دهيد :

Student Table
Student ID Name Family Major City Grade
41252214 Ahmad Rezaee Hard Ware Tehran 18
10724113 Ehsan Amiri Soft Ware Karaj 14
10254861 Zahra Hosini Hard Ware Tehran 17
27365187 Sahar Ahmadi Soft Ware Bam 16
35654415 Hesam Razavi Soft Ware Tehran 19

Selection Table
Student ID Course ID Term Year Grade
41252214 1011 2 85 - 86 16
10724113 1011 2 85 - 86 14
41252214 1012 1 85 - 86 17
10724113 1012 1 85 - 86 11
10254861 1013 2 85 - 86 13
10254861 1011 2 84 - 85 8
27365187 1012 1 84 - 85 19
27365187 1013 1 84 - 85 16
35654415 1011 2 84 - 85 9
35654415 1013 2 84 - 85 17

مثال
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 35
Ehsan Amiri 25
Zahra Hoseini 21
Hesam Razavi 26
Ahmad Rezaee 33
خروجی


نظرات شما عزیزان:

نام :
آدرس ایمیل:
وب سایت/بلاگ :
متن پیام:
:) :( ;) :D
;)) :X :? :P
:* =(( :O };-
:B /:) =DD :S
-) :-(( :-| :-))
نظر خصوصی

 کد را وارد نمایید:

 

 

 

عکس شما

آپلود عکس دلخواه:






موضوعات مرتبط: دستور Group By

آخرین مطالب

آمار وبلاگ:

بازدید امروز : 19039
بازدید دیروز : 39156
بازدید هفته : 19039
بازدید ماه : 3884190
بازدید کل : 1579083884
تعداد مطالب : 405
تعداد نظرات : 6
تعداد آنلاین : 190