پاسخ به:آموزش گام به گام 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 با ظاهر متفاوت جهت افزایش سرعت پیاده سازی شده است.
خب دوستان در پست بعد مثالی دیگری از توابع تجمعی رو بیان می کنم.