آموزش SQL - بخش 6

به این مطلب رای دهید
(1 vote)

توابع درون ساخته SQL

دستور 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 مجموع نمرات

Group By Name ;
From Class

کد

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 مجموع نمرات

Where Students.Student ID = Selection.Student ID
Group By Name , Family
Order By Family;
From Students , Selection

کد

Name

Family

مجموع نمرات

Sahar

Ahmadi

35

Ehsan

Amiri

25

Zahra

Hoseini

21

Hesam

Razavi

26

Ahmad

Rezaee

33

 

خروجی

 

 

دستور Having :

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

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

 

Courses Table

Course ID

Co Title

Credit

Co Type

1011

پايگاه داده

3

عملی

1012

مباحث ويژه

3

عملی

1013

زبان تخصصی

2

نطری

 

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

مطالب بیشتری که در این بخش خواهید یافت: جاوا اسکریپت چیست؟ »