دستور Group By : در هنگام استفاده از برخی از توابع درون ساخته SQL که عمل محاسبه ( مثل مجموع و ميانگين ) را بر روی داده ها انجام می دهند ، اين مشکل وجود دارد که اين توابع قادر به جدا کردن و متمايز کردن اطلاعات موجود در دو ستون نسبت به هم نيستند و نتايج محاسبات را به صورت کلی برای همه آنها در نظر می گيرند . از دستور Group By برای دسته بندی يک ستون بر حسب مقادير مشابه فيلدهای يک ستون ديگر استفاده می شود . شکل کلی استفاده از اين دستور به صورت زير است : Select نام ستون 1 , Sum ( 2 نام ستون ) ّFrom نام جدول Group By نام ستون 1 ; مثال : فرض کنيد جدولی به صورت زير برای نمرات 2 دانشجو داريم : [TABLE="class: ex, width: 50%"] [TR] [TD="class: header, colspan: 2"] Class Table [/TD] [/TR] [TR] [TD="class: header"] Name [/TD] [TD="class: header"] Grade[/TD] [/TR] [TR] [TD="class: body"] Ali Ahmadi [/TD] [TD="class: body"] 18[/TD] [/TR] [TR] [TD="class: body"] Reza Hoseini [/TD] [TD="class: body"] 17[/TD] [/TR] [TR] [TD="class: body"] Ali Ahmadi [/TD] [TD="class: body"] 20[/TD] [/TR] [TR] [TD="class: body"] Reza Hoseini [/TD] [TD="class: body"] 13[/TD] [/TR] [/TABLE] در صورت عدم استفاده از دستور Group By در تابع Sum خروجی زير را خواهيم داشت : [TABLE="class: ex"] [TR] [TD="class: header, colspan: 2"] مثال [/TD] [/TR] [TR] [TD="class: body"] Select Sum ( Grade ) As مجموع نمرات From Class ; [/TD] [TD="class: header"] کد [/TD] [/TR] [TR] [TD="class: body"] [TABLE="class: ex, width: 200"] [TR] [TD="class: header"] مجموع نمرات [/TD] [/TR] [TR] [TD="class: body, align: center"] 68 [/TD] [/TR] [/TABLE] [/TD] [TD="class: header"] خروجی [/TD] [/TR] [/TABLE] - مسلما خروجی فوق مورد نظر برنامه ساز نيست . می توان با استفاده از دستور Group By ، مجموع نمرات را برای دانشجويان بر حسب ستون Name به صورت جدا محاسبه کرد و به صورت زير نمايش داد : [TABLE="class: ex"] [TR] [TD="class: header, colspan: 2"] مثال [/TD] [/TR] [TR] [TD="class: body"] Select Name ,Sum ( Grade ) As مجموع نمرات From Class Group By Name ; [/TD] [TD="class: header"] کد [/TD] [/TR] [TR] [TD="class: body"] [TABLE="class: ex, width: 400"] [TR] [TD="class: header"] Name [/TD] [TD="class: header"] مجموع نمرات [/TD] [/TR] [TR] [TD="class: body"] Ali Ahmadi [/TD] [TD="class: body, align: center"] 38 [/TD] [/TR] [TR] [TD="class: body"] Reaz Hoseini [/TD] [TD="class: body, align: center"] 30 [/TD] [/TR] [/TABLE] [/TD] [TD="class: header"] خروجی [/TD] [/TR] [/TABLE] مثال 2 : از جدول Students و Selection مجموع نمرات هر دانشجو را به همراه نام و نام خانوادگی ، که بر حسب نام خانوادگی مرتب شده باشد نمايش دهيد : [TABLE="class: ex"] [TR] [TD="class: header, colspan: 6"] Student Table[/TD] [/TR] [TR] [TD="class: header"] Student ID[/TD] [TD="class: header"] Name[/TD] [TD="class: header"] Family[/TD] [TD="class: header"] Major[/TD] [TD="class: header"] City[/TD] [TD="class: header"] Grade[/TD] [/TR] [TR] [TD="class: body"] 41252214[/TD] [TD="class: body"] Ahmad[/TD] [TD="class: body"] Rezaee[/TD] [TD="class: body"] Hard Ware[/TD] [TD="class: body"] Tehran[/TD] [TD="class: body"] 18[/TD] [/TR] [TR] [TD="class: body"] 10724113[/TD] [TD="class: body"] Ehsan[/TD] [TD="class: body"] Amiri[/TD] [TD="class: body"] Soft Ware[/TD] [TD="class: body"] Karaj[/TD] [TD="class: body"] 14[/TD] [/TR] [TR] [TD="class: body"] 10254861[/TD] [TD="class: body"] Zahra[/TD] [TD="class: body"] Hosini[/TD] [TD="class: body"] Hard Ware[/TD] [TD="class: body"] Tehran[/TD] [TD="class: body"] 17[/TD] [/TR] [TR] [TD="class: body"] 27365187[/TD] [TD="class: body"] Sahar[/TD] [TD="class: body"] Ahmadi[/TD] [TD="class: body"] Soft Ware[/TD] [TD="class: body"] Bam[/TD] [TD="class: body"] 16[/TD] [/TR] [TR] [TD="class: body"] 35654415[/TD] [TD="class: body"] Hesam[/TD] [TD="class: body"] Razavi[/TD] [TD="class: body"] Soft Ware[/TD] [TD="class: body"] Tehran[/TD] [TD="class: body"] 19[/TD] [/TR] [/TABLE] [TABLE="class: ex"] [TR] [TD="class: header, colspan: 5"] Selection Table[/TD] [/TR] [TR] [TD="class: header"] Student ID[/TD] [TD="class: header"] Course ID[/TD] [TD="class: header"] Term[/TD] [TD="class: header"] Year[/TD] [TD="class: header"] Grade[/TD] [/TR] [TR] [TD="class: body"] 41252214[/TD] [TD="class: body"] 1011[/TD] [TD="class: body"] 2[/TD] [TD="class: body"] 85 - 86[/TD] [TD="class: body"] 16[/TD] [/TR] [TR] [TD="class: body"] 10724113[/TD] [TD="class: body"] 1011[/TD] [TD="class: body"] 2[/TD] [TD="class: body"] 85 - 86[/TD] [TD="class: body"] 14[/TD] [/TR] [TR] [TD="class: body"] 41252214[/TD] [TD="class: body"] 1012[/TD] [TD="class: body"] 1[/TD] [TD="class: body"] 85 - 86[/TD] [TD="class: body"] 17[/TD] [/TR] [TR] [TD="class: body"] 10724113[/TD] [TD="class: body"] 1012[/TD] [TD="class: body"] 1[/TD] [TD="class: body"] 85 - 86[/TD] [TD="class: body"] 11[/TD] [/TR] [TR] [TD="class: body"] 10254861[/TD] [TD="class: body"] 1013[/TD] [TD="class: body"] 2[/TD] [TD="class: body"] 85 - 86[/TD] [TD="class: body"] 13[/TD] [/TR] [TR] [TD="class: body"] 10254861[/TD] [TD="class: body"] 1011[/TD] [TD="class: body"] 2[/TD] [TD="class: body"] 84 - 85[/TD] [TD="class: body"] 8[/TD] [/TR] [TR] [TD="class: body"] 27365187[/TD] [TD="class: body"] 1012[/TD] [TD="class: body"] 1[/TD] [TD="class: body"] 84 - 85[/TD] [TD="class: body"] 19[/TD] [/TR] [TR] [TD="class: body"] 27365187[/TD] [TD="class: body"] 1013[/TD] [TD="class: body"] 1[/TD] [TD="class: body"] 84 - 85[/TD] [TD="class: body"] 16[/TD] [/TR] [TR] [TD="class: body"] 35654415[/TD] [TD="class: body"] 1011[/TD] [TD="class: body"] 2[/TD] [TD="class: body"] 84 - 85[/TD] [TD="class: body"] 9[/TD] [/TR] [TR] [TD="class: body"] 35654415[/TD] [TD="class: body"] 1013[/TD] [TD="class: body"] 2[/TD] [TD="class: body"] 84 - 85[/TD] [TD="class: body"] 17[/TD] [/TR] [/TABLE] [TABLE="class: ex"] [TR] [TD="class: header, colspan: 2"] مثال [/TD] [/TR] [TR] [TD="class: body"] Select Name , Family , Sum ( Selection.Grade ) As مجموع نمرات From Students , Selection Where Students.Student ID = Selection.Student ID Group By Name , Family Order By Family; [/TD] [TD="class: header"] کد [/TD] [/TR] [TR] [TD="class: body"] [TABLE="class: ex, width: 600"] [TR] [TD="class: header"] Name [/TD] [TD="class: header"] Family [/TD] [TD="class: header"] مجموع نمرات [/TD] [/TR] [TR] [TD="class: body"] Sahar [/TD] [TD="class: body"] Ahmadi [/TD] [TD="class: body, align: center"] 35 [/TD] [/TR] [TR] [TD="class: body"] Ehsan [/TD] [TD="class: body"] Amiri [/TD] [TD="class: body, align: center"] 25 [/TD] [/TR] [TR] [TD="class: body"] Zahra [/TD] [TD="class: body"] Hoseini [/TD] [TD="class: body, align: center"] 21 [/TD] [/TR] [TR] [TD="class: body"] Hesam [/TD] [TD="class: body"] Razavi [/TD] [TD="class: body, align: center"] 26 [/TD] [/TR] [TR] [TD="class: body"] Ahmad [/TD] [TD="class: body"] Rezaee [/TD] [TD="class: body, align: center"] 33 [/TD] [/TR] [/TABLE] [/TD] [TD="class: header"] خروجی [/TD] [/TR] [/TABLE]