توابع تجميعي (Aggregate Functions)
توابع تجميعي يكسري عمليات رو بر روي تعدادي ركورد از يك يا چند جدول ميدهند و نتيجه رو بصورت عدد بر ميگردانند.
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 رو انتخاب كرديم.
تمرين: برنامهاي بنويسيد كه نام كتاب و تعداد فروش كتاب را ليست كند.
طه / Borna66