توابع aggregate در SQL و کاربرد آنها
یک تابع جمع یا aggregate function برای بکارگیری بک محاسبه برای مجموعه ای از مقادیر استفاده میشود و تنها یک مقدار برمیگرداند.
رایج تربن تابعها در sql:
- MIN(): کمترین مقدار یک ستون را برمیگرداند
- MAX(): بیشترین مقدار یک ستون را برمیگرداند
- COUNT(): تعداد سطر ها در یک مجموعه را بر میگرداند
- SUM(): جمع مقادیر عددی یک ستون را برمیگرداند
- AVG(): میانگین مقادیر عددی یک ستون را برمیگرداند
توابع تجمیعی به جز COUNT(*)، مقادیر null در ستون ها را نادیده میگیرند.
برای مثال، جدول دانشجویان لیستی از نام و نام خانوادگی، سن، معدل می باشد. با استفاده از توابع aggregate میتوانیم برای کل دانشجویان (که مجموعه ما هستند) مواردی مانند:
- کمترین معدل، کمترین سن
- بیشترین معدل، بیشترین سن
- تعداد دانش آموزان
- مجموع سن همه دانشجویان
- میانگین سن همه دانشجویان
محاسبات بالا از ساده ترین نوع استفاده از توابع aggregate است.
معمولا از این توابع با عبارات GROUP BY و عبارت های شرطی در WHERE در دستورات SELECT ادغام میشوند و خروجی های پیشرفته تری رو ارائه میدهند.
یک نکته سریع: دستور GROUP BY باعث جداسازی داده به گروهی از مقادیر میشود، و توابع aggregate میتواند محاسبات را برای هر گروه انجام دهد.
برای مثال جدول زیر را در نظر بگیرید
| field | grade | age | fullname | id |
| IT | 18.4 | 20 | STD-1 | 1 |
| SW | 18.5 | 20 | STD-2 | 2 |
| SW | 17.3 | 19 | STD-3 | 3 |
| HW | 15.8 | 21 | STD-4 | 4 |
| IT | 19.7 | 23 | STD-5 | 5 |
| HW | 15.6 | 20 | STD-6 | 6 |
| HW | 17.8 | 25 | STD-7 | 7 |
با دستور GROUP BY روی ستون age داده های جدو بر اساس مقدار age به چند دسته تقسیم بندی میشوند.
SELECT age FROM students GROUP BY age ORDER BY age;
خروجی دستور بالا به صورت زیر است
| age |
| 19 |
| 20 |
| 21 |
| 23 |
| 25 |
با استفاده از GROUP BY روی ستون age مقادیر یکتای سن دانشجویان را به دست آوردیم.
دستور زیر تعداد دانشجویان در سنین مختلف را نشان میدهد
| COUNT(age) | age |
| 1 | 19 |
| 3 | 20 |
| 1 | 21 |
| 1 | 23 |
| 1 | 25 |
دستور زیر میانگین سنی، میانگین معدل، بیشترین و کمترین معدل در هر رشته (ستون field) را نشان میدهد
SELECT field, AVG(age), AVG(grade), MAX(grade), MIN(gared) FROM students GROUP BY field;
خروجی به صورت زیر است
| MIN(grade) کمترین معدل | MAX(grade) بیشترین معدل | AVG(grade) میانگین معدل | AVG(age) میانگین سن | field رشته |
| 18.4 | 19.7 | 19.05 | 21.5 | IT |
| 17.3 | 18.5 | 17.9 | 19.5 | SW |
| 15.6 | 17.8 | 16.4 | 22 | HW |
عبارت GROUP BY روی ستون field باعث شد، فانکشن های aggregate برای هر filed به صورت مجزا محاسبات را انجام دهد.
در قسمت های بعدی، هر یک از توابع را به صورت عمیق تر بررسی خواهیم کرد.