برای ساخت پرس وجوهای تجمعی یا آماری در sql از توابع تجمعی استفاده می شود، با استفاده از این توابع روی محاسباتی روی ستون های جداول انجام شده و نتایج نشان داده می شود. در این بخش به معرفی چند نمونه از این توابع و استفاده از آنها می پردازیم
در SQL دو نوع تابع وجود دارد :
1- توابع اسکالر: روی یک ستون (بدون تعیین ستون) اجرا شده و روی یک مقدارعمل میکند.مثل توابع ریاضی،رشته ای،تاریخ و غیره
- توابع تجمعی: روی یک ستون از جدول اجرا شده و بر روی چند سطر عمل می کند.
توابع تجمعی عبارتند از
count : محاسبه تعداد سطرها sum : محاسبه مجموع مقادیر یک ستون
avg : محاسبه میانگین مقادیر یک ستون max ،min : محاسبه حداکثر یاحداقل مقادیر یک ستون
مثال1- تعداد سطر های جدولstuds را برمی گرداند.
select count (*) from studs
خروجی:
Count(*) |
4 |
جدول فروش رابصورت زیر درنظر بگیرید:
cp
qty | pid | cid |
150
160 130 100 |
10
10 3 4 |
100
101 100 101 |
مثال2- محاسبه ی مجموع مقادیر درجدول فروش
select sum(qty) from cp
مثال3- مجموع فروش کالاهای شماره ی 10 را پیدا کنید
select sum(qty) From cp Where pid=10 ;
مثال4- میانگین کل دانشجویان یک دانشگاه
select Avg(avgr) from studs
مثال 5- بالاترین معدل بین دانشجویان رشته کامپیوتروکد 2
select max(avgr) from studs where fid=2
خروجی:
max(avgr) |
18 |
جدول دانشجویان ، دروس و انتخاب درس را بصورت زیر در نظر بگیرید:
studs
Fid | Avg | Name | Id |
2
1 2 1 |
17
18 15 16 |
Ali
Reza Ahmad Hadi |
100
101 102 103 |
جدول courses
units | title | code |
2
2 3 |
Db
Web physics |
10
11 12 |
Sabtenam
score | code | id |
16
18 10 12 |
10
12 11 10 |
100
101 102 102 |
Code: کد درس id : شماره دانشجویی score: نمره
مثال6- نمایش بالاترین معدل ها به تفکیک رشته
select fid , Max (avgr)
from studs
group by fid
Max(Avgr) | Fid |
18
17 |
1
2 |
مثال 7 : نامگذاری ستون ها بصورت دلخواه
select fid , Max (avgr) MG
from studs
group by fid
MG | Fid |
18
17 |
1
2 |
مثال8- بالاترین معدل های بالای 15 را به تفکیک رشته نمایش دهید.
select Fid , Max (avgr)
from studs
group by Fid
having Max (avgr) > 15;
* از HAVING برای اعمال محدودیت روی نتیجه پرس و جوی تجمعی استفاده می شود
مثال 9- بالاترین معدل ها را به تفکیک رشته برای دانشجویان با شماره دانشجویی بزرگتر از 3 نمایش دهید.
select Fid , Max (avgr)
from studs
where id > 3
group by Fid;