اجعل رورو44 صفحتك الرئيسية | احفظ رورو44 في مفضلتك | ارسل رورو44 إلى صديقك | أعلن على رورو44 | English Interface

 

 

 

شات خدمات مسجات جوال بطاقات رسائل حب دليل مواقع شات خليجي  دردشة منتديات حسناء الفارس عالم الرومانسية

مواقع سعودية | مواقع كويتية | مواقع بحرينية | مواقع قطرية | مواقع عمانية | مواقع يمنية | مواقع عراقية | مواقع اماراتية

 
    دروس في قواعد البيانات  سكيول - SQL
 

 

أمر التجميع والإحتواء ودوال المجموع SQL Group & SQL HAVING with Aggregate Function



دوال المجموع في السكيول SQL Aggregate Function:

تعرفنا في الجزء الأول من الدرس الرابع على الدوال في السكيول، هل تذكرونها (AVG, SUM, MAX, MIN, COUNT)؟ وقد تتسائل الآن عزيزي القارئ عن معنى كلمة "دوال المجموع في السكيول SQL Aggregate Function"؟!

نقصد بدوال المجموع في السكيول أي دالة من الدوال التي تعلمناها سابقاً إذا طبقناها على جدول بعد فرز سجلاته وتصنيفها، فنطبق الدالة على جميع قيم حقل الدالة الموجودة في كل صنف على حدة، لا على جميع القيم الموجودة في الجدول كاملاً!

ربما  صيغة باكوس-ناور* التالية في شرح دوال المجموع قد تزيد من اقتراب المعنى إليك:

< GROUPING column >£ < FUNCTION column >Table Name

فمثلاً: لو أردنا معرفة عدد الموظفين في كل قسم من جدول الموظفين مثلاً، سنثبت حقل القسم DNO ثم سنطبق دالة count على أي حقل في الجدول ويكتب الأمر كالتالي:

DNO £ COUNT FNAME EMPLOYEE

حيث أن £ تسمى "سكريبت إف Script F" وهي مجموعة أوامر تستخدم مع دوال المجموع في السكيول سنتعرف عليها في درس اليوم إن شاء الله!

أمر التجميع ودوال المجموع في السكيول SQL Group & Aggregate Function:

دوال المجموع في السكيول دائماً تحتاج إلى تثبيت حقل يتم الفرز من خلاله يسمى "حقل التجميع grouping_column"، يتعين هذا الحقل عن طريق أمر Group by، صيغته كالتالي:

SELECT grouping_column,function(column) FROM table GROUP BY grouping_column;


مثال1:

من جدول العمال التالي:

HOURS

PNO

ENUMBER

20.5

1

11

17.5

2

22

10

2

33

10

1

44

 لو طبقنا أمر السكيول الذي درسناه في الدرس الرابع والذي نطلب فيه عدد ساعات العمل لجميع الموظفين في القسمين:

SELECT SUM(HOURS) AS SUM_OF_HOURS FROM WORKS_ON;

فستكون النتيجة:58 طبقت على جميع حقول HOURS في القسمين دون تحديد!

بواسطة أمر Group by نستطيع أن نسترجع عدد ساعات العمل في كل قسم على حدة، كالتالي:

SELECT PNO, SUM(HOURS) AS SUM_OF_HOURSAS FROM WORKS_ON GROUP BY PNO;

والنتيجة:

لاحظ أنه يمكننا وضع حقل التجميع كي يظهر في النتيجة بعد أمر SELECT ومع إحدى الدوال -سواء أتى ترتيبه قبل الدالة أو بعدها-، يمكننا فقط تحديد حقل(أو حقول) التجميع كي يظهر في النتيجة وليس أي حقل آخر في الجدول! كما يمكننا عدم وضعه في النتيجة.

مثال2:

لو أردنا معرفة متوسط ساعات العمل على كل منتج في الأقسام، نريد أن تظهر لنا النتيجة (اسم المنتج، متوسط عدد ساعات العمل فيه)، لاحظ أن المعلومات التي نريدها موجودة في جدولين: جدول العمل وجدول المشاريع، نكتب الأمر:

SELECT PNAME, AVG(HOURS) AS Hours_Avg
FROM PROJECT, WORKS_ON
WHERE PNUMBER=PNO
GROUP BY PNAME;

والنتيجة:

 

مثال3:

نفس المثال السابق، لكننا نريد أن تظهر النتيجة (اسم المنتج، رقمه، متوسط عدد ساعات العمل فيه)، لاحظ أننا استخدمنا حقلين كحقول تجميع هي اسم المنتج ورقمه، نكتب الأمر:

SELECT PNAME, PNO, AVG(HOURS) AS Hours_Avg
FROM PROJECT, WORKS_ON
WHERE PNUMBER=PNO
GROUP BY PNAME, PNO;

 

والنتيجة:

 

أمر الإحتواء ودوال المجموع في السكيول SQL HAVING & Aggregate Function:

يستخدم أمر الأحتواء مع دوال السكيول لأنه يستحيل استخدام أمر الشرط Where clause على الدوال وخصوصاً إذا طبقنا عليها التجميع Group by، لذلك فأمر الاحتواء يمكننا بطريقة ما من الشرط على الدوال والتجميع في أمر واحد في السكيول، صيغته كالتالي:

SELECT grouping_column,function(column) FROM table
GROUP BY grouping_column
HAVING
function(column) condition value;

 

إذن، فأمر HAVING ببساطة هو أمر للشرط على الدوال يستخدم في الجملة إذا استخدمنا فيها أحد الدوال + أمر التجميع GROUP BY فقط! تذكر ذلك

مثال4:

نفس مثال 2 السابق، لكننا هنا سنشترط أن يكون متوسط عدد الساعات أقل من 15 ساعة، سنكتب هذا الشرط ضمن جملة Having لأنه شرط على نتيجة دالة، نكتب الأمر كالتالي:

SELECT PNAME, AVG(HOURS) AS Hours_Avg
FROM PROJECT, WORKS_ON
WHERE PNUMBER=PNO
GROUP BY PNAME
HAVING AVG(HOURS) < 15;

 

والنتيجة:

 

مثال5:

نفس مثال 3 السابق، لكننا هنا سنشترط أن يكون متوسط عدد الساعات أكبر من 15 ساعة، سنكتب هذا الشرط ضمن جملة Having لأنه شرط على نتيجة دالة، نكتب الأمر كالتالي:

SELECT PNAME, PNO, AVG(HOURS) AS Hours_Avg
FROM PROJECT, WORKS_ON
WHERE PNUMBER=PNO
GROUP BY PNAME, PNO
HAVING AVG(HOURS) > 15;

 

والنتيجة:

بذلك يكون درسنا قد انتهى



المزيد من المواضيع

دورة SQL [الدرس الخامس] : الربط في السيكيول SQL Join
دورة SQL [الدرس الرابع / الجزء الثاني] : أوامر إضافة ، تحديث، وحذف السجلات
دورة SQL [الدرس الرابع / الجزء الأول] : الدوال SQL Functions
دورة SQL [الدرس الثالث : الجزء الثاني] : التعمق في الشروط
دورة SQL [الدرس الثالث : الجزء الأول] : الأمر Select ... From ... Where
دورة SQL [الدرس الأول] : مقدمة في قواعد البيانات

1

 

الاقسام الرئيسية

دروس للمبتدئين

--

دروس في أنظمة التشغيل

--

دروس في الانترنت

--

دروس في لغات البرمجة

--

دروس في برمجة المواقع

--

دروس في الأوفيس

--

دروس في الرسوم و التصميم

--

دروس في قواعد البيانات

--

دروس في الألعاب والبرامج

--

دروس في المكونات الصلبة

--

دروس في الشبكات

--

دروس في أمن المعلومات

--

دروس في الذكاء الاصطناعي

--

القائمة البريدية

  فضائح | ماسنجر | تداول | الحياة الزوجية | عجائب وغرائب| دروس تعليمية | عالم حواء | فضائح الفن | ستار اكاديمي | نكت | برامج | صور | | شات سعودي | شات عربي | ماسينجر | مسجات | دليل مواقع | دليلك | مواقع سعودية | مواقع كويتية | مواقع بحرينية | مواقع قطرية | مواقع عمانية | مواقع يمنية | مواقع عراقية | مواقع اماراتية | دردشة خليجية | دردشة سعودية | دردشة عربية | شات صوتي | دردشة صوتية | دردشة كويتية | دردشة اماراتية | دردشة عمانية | دردشة قطرية | دردشة بحرينية | دردشة عراقية | دردشة يمنية | سكس | طريق الاسلام, انا مسلم , طريق الهدايه , مسلمون , منوعات اسلاميه | اسلاميات , برامج اسلامية , منوعات اسلامية | جنس | الاسرة المسلمة , الاسرة العربية , اسرتي , عائلتي | برامج الاسره , نصائح معلومات , اسرة عربية سعودية خليجية | دروس تعليمية , مكتبة الدروس التعليمية | شروح برامج , شرح برامج , دورات تعليميه | طب وصحه - المركز الطبي | طبيبك على الانترنت , معلومات طبية , معلومات صحيه

Roro44.com xml :                            

شات سعودي | شات عربي | شات خليجي | العاب | دردشات | العاب بنات

 |  اشهر موقعك | احصائيات الموقع | اسعار الاعلانات |  لمراسلة الإدارة  |

:: ©2007-2003 www.roro44.com All rights reserved ::