0

آموزش گام به گام SQL Server

 
cryingsphere
cryingsphere
کاربر نقره ای
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 375
محل سکونت : خراسان رضوی

پاسخ به:آموزش گام به گام SQL Server
پنج شنبه 30 تیر 1390  11:35 AM

سلام

خب دوستان پس از یک تاخیر چند روزه آموزش رو ادامه می دیم :

 

-  توابع جمعی :  این توابع عملیات روی مجموعه ای از رکوردها را بعهده دارند و عموماً در دستورات گروه بندی ( Group By )  ظاهر می گردند که اهم این توابع به شرح ذیل می باشند :

 

مقدار می نیمم یک عبارت را محاسبه می کند    Min

مقدار ماکزیمم یک عبارت را محاسبه می کند     Max

مقدار میانگین یک عبارت را محاسبه می کند      Avg

مقدار جمع یک عبارت را محاسبه می کند                     Sum

تعداد رکوردهای اشاره شده را شمارش می کند            Count

 

اما این توابع در SubQuery ها می توانند بعنوان یک ستون اطلاعاتی منعکس شوند دراین خصوص به مثال های ذیل توجه فرمائید.

 

مثال :  بااستفاده از دستور Select  ستونهای ذیل را به ترتیب فامیلی برای افرادی که بیش از یک تحت تکفل دارند استخراج نمائید.

 

                        تعداد فرزند    ,  تعداد تحت تکفل   ,    نام    ,    نام خانوادگی    ,    شماره کارمندی

) RID = 2 , 3 (

 

روش اول :  در این حالت جدول اصلی Person  و جدول ارتباطی Child  خواهد بود بنابراین خواهیم داشت :

 

Select  PrsID , PFamily , PName,

(Select  Count (*) From Child Where PrsID=P.PrsID) As CT ,

(Select  Count (*) From  Child  Where  PrsID = P.PrsID

and  RID In ( 2 , 3 ) ) As  CC

From  Person  P

Where  (Select Count (*)  From  Child Where PrsID = P.PrsID ) > 1

 
Order  By  2, PName

روش دوم :  در این حالت جدول اصلی Child  و جدول ارتباطی Person  خواهد بود بنابراین خواهیم داشت :

 

Select  C1.PrsID,

(Select  PFamily From Person Where PrsID = C1.PrsID) As  PFamily,

(Select  PName  From  Person Where PrsID = C1.PrsID) As  PName,

Count (*)  As  CT,

(Select  Count(*) From Child C2 Where  PrsID=C1.PrsID and RID In(2,3)) As CC

From  Child  C1

Group  By  C1.PrsID

Having  Count (*) > 1

Order  By  PFamily , 3

 

 

همانطور که ملاحظه می گردد در روش دوم شرط استخراج رکوردهای گروه بندی در جلوی دستور Having  ظاهر شده است و از طرفی چون ستونهای 3 , 2  استخراج شده یک SubQuery  می باشند بنابراین دستور Order By  با ظاهر متفاوت جهت افزایش سرعت پیاده سازی شده است.

 

خب دوستان در پست بعد مثالی دیگری از توابع تجمعی رو بیان می کنم.

 

تشکرات از این پست
دسترسی سریع به انجمن ها