[B]توابع تجميعي [/B][B](Aggregate Functions)[/B]

توابع تجميعي يكسري عمليات رو بر روي تعدادي ركورد از يك يا چند جدول مي*دهند و نتيجه رو بصورت عدد بر مي*گردانند.

Sum :جمع فيلد مورد نظر را محاسبه مي*كند.
Min: مينيموم مقدار فيلد مورد نظر را در ركوردها به دست مي**آورد
Max : ماكزيموم مقدار فيلد مورد نظر را در ركوردها به دست مي*آورد
AVG: ميانگين مقدار فيلد را محاسبه مي*كند.
Count : تعداد ركوردهايي كه فيلد مورد نظر در آن Null نباشد را محاسبه مي*كند.


مثال: دستور زير، جمع قيمت را در جدول كتاب*ها محاسبه مي*كند:
SELECT SUM(price) FROM titles

مثال: دستور زير تعداد ركورد*هايي از جدول كتاب*ها را كه فيلد Price آن*ها Null نباشد را محاسبه مي*كند:
SELECT COUNT(price) FROM titles

نكته: چون توابع تجميعي با فيلد Null كاري ندارند، لذا چنانچه بخواهيد تعداد ركوردهاي جدول را به دست آوريد بهتر است از فيلد كليد اصلي (Primary Key) استفاده شود. البته براي به دست آوردن تعداد ركورد*هاي يك جدول مي*توان از دستور زير نيز استفاده كرد.
SELECT COUNT(*) FROM authors


عبارت Distinct :
فرض كنيد جدول T1 را به شكل زير داشته باشيم. با استفاده از عبارت Distinct تنها ركوردهايي كه فيلد مورد نظر غير تكراري باشد را در نظر خواهد گرفت:
1. SELECT f1 FROM T1
2. SELECT DISTINCT f1 FROM T1
3. SELECT f1,f2 FROM T1
4.SELECT DISTINCT f1,f2 FROM T1







مثال: چند تا از نويسندگان كتاب دارند؟
SELECT COUNT(DISTINCT au_id) FROM titleauthor

مثال: با توجه به جدول T1 زير، جدول را بر اساس فيلد f1 گروه*بندي كرده و جمع هر گروه را نمايش دهيد.

SELECT f1,SUM(f2) AS tp FROM t1 GROUP BY f1





نكته: در هنگام استفاده از توابع تجميعي، اگر در دستور Select، غير از خود تابع، نام هر فيلد ديگري آورده شود (همانند مثال بالا كه نام فيلد f1 در دستور Select آورده شده است)، حتماً مي*بايست در انتهاي دستور، عبارت Group By به همراه فيلد*هاي نام برده شده در دستور Select را بياوريم. در غير اينصورت با خطا مواجه مي*شويم.

نكته: در دستور Select قبل شايد قسمت AS tp رو متوجه نشديد كه كارش چيه. در حقيقت با استفاده از اين روش، براي فيلدي كه توسط تابع تجميعي ما ساخته ميشه، اسم tp رو انتخاب كرديم.