يستخدم هذا التابع لإنجاز عمليات الجمع, ويأخذ التابع () sum وسيطاً واحداً هو اسم عمود ويكون استخدامه كما يلي:
select sum (bonus) as total bonus from emp
وستظهر النتيجة كالتالي:
+--------------+
|total bonus .. ........ |
+--------------+
|6250 .................. |
+--------------+
لاحظ أن التابع لم يظهر لنا NULL على الرغم من وجود بعض الخلايا في العمود bonus تحوي NULL وكنا قد قلنا أن مجموع أي قيمة مع NULL هو NULL, هذا الكلام صحيح ولكن في حال أنك تستخدم العمليات الحسابية وليس التوابع, وإلا فما الفائدة من التوابع ما لم تختصر علينا بعض الخطوات والمشاكل.
قبل أن نستمر تذكر هذه النقاط الهامة:
1. لا يقف استخدام التوابع عند هذه الحدود البسيطة.
2. لفرز النتائج تستخدم مع التوابع العبارة group by و ليس العبارة order by.
3. معظم التوابع الرياضية في MySQL تستخدم من أجل المعلومات الإحصائية.
الآن .. سنأخذ هذا التمرين الجيد.
أكتب استعلاماً يعيد لنا عدد الفواتير المسجلة باسم كل زبون والمجموع المالي لهذه الفواتير.
هنا تكمن أهمية التوابع الجاهزة في MySQL فلو أردت أن تحقق مثل هذا الاستعلام بلغة برمجة, سيحتاج منك الأمر إلى ما يزيد عن 30 سطر برمجي والعديد من حلقات for وعبارات if/else .
إليك الحل عن طريق التوابع الرياضية الجاهزة في MySQL :
select cli_no , count(bil_no) , sum(paid) from bills group by cli_no
وتسكون النتيجة كما يلي:
+---------+----------+---------+
cli_no ......... | count (bil_no) ......... | sum paid |
+---------+---------+---------+
1| ........... 4 | ............... 1350 I ........ |
2| ............ 2 | .............. 800 I .......... |
3| ............ 1 | .............. |250 I ......... |
+---------+---------+---------+
وتبين النتيجة أن الزبون الأول قد اشترى بمقدار أربع فواتير ومجموع ما اشتراه هو 1350 وكذلك بالنسبة لبقية الزبائن.
حسناً دعنا نطور هذا الاستعلام ونضيف له اسم الزبون وبريده الإلكتروني.