هناك شرط في وظائف SQL التجميعية

هناك شرط في وظائف SQL التجميعية

في هذا البرنامج التعليمي ، سنناقش بعض الطرق التي يمكننا من خلالها استخدام أو تنفيذ شرط HAVING في وظائف SQL التجميعية . يمكن أن يساعد استخدام هذا البند في وظائف SQL التجميعية بشكل كبير في تلخيص البيانات.

عبارة HAVING تشبه إلى حد كبير جملة WHERE ويمكن أيضًا تنفيذها معها.

سنناقش ارتباطاتهم واختلافاتهم من خلال تقديم أمثلة أثناء استعراضنا لهذا البرنامج التعليمي.

جدول المحتويات

تجميع حسب وأين البيانات في SQL

في مثالنا الأول ، سنناقش كيفية تنفيذ جملة WHERE و GROUP BY باستخدام الجدول النموذجي أدناه. يرجى ملاحظة أنه لا يمكننا استخدام جملة WHERE إلا مع الأعمدة الموجودة وليس في الدالات المجمعة وحدها.

هناك شرط في وظائف SQL التجميعية

لنفترض أننا نريد الحصول على إجمالي مبيعات المنتج استنادًا إلى عمود حجم المبيعات حيث تكون القيمة أكبر من 2 . من أجل الحصول على النتيجة ، يجب أن يكون أمرنا كالتالي:

هناك شرط في وظائف SQL التجميعية

أولاً ، نحدد اسم المنتج ونجمع مبلغ البيع للحصول على إجمالي المبيعات. 

هناك شرط في وظائف SQL التجميعية

بعد ذلك ، استخدمنا عبارة WHERE هنا لأننا نحاول فقط الحصول على المنتجات التي يكون حجم المبيعات فيها أكبر من 2. يشير الأمر "GROUP BY ProductName" إلى أنه سيتم تجميع الصفوف الموجودة أسفل العمود ProductName في واحد.

من خلال تنفيذ مجموعة الأوامر الخاصة بنا ، سنرى أنه من بين جميع البيانات الموجودة ضمن عمودي ProductName و SaleAmount ، تم عرض المصباح والمروحة فقط . هذا لأنهم كانوا الوحيدين الذين لديهم مبلغ تخفيض أكبر من 2.

هناك شرط في وظائف SQL التجميعية

في هذا المثال ، تُستخدم عبارة WHERE لتصفية النتائج بعمود موجود ، وهو مبلغ المبيعات . لاحظ أيضًا أن عبارة WHERE تظهر قبل GROUP BY ولا يمكن استخدامها لتصفية الدالات التجميعية. من ناحية أخرى ، تظهر عبارة HAVING بعد GROUP BY وتُستخدم للتصفية استنادًا إلى دالة تجميعية. 

GROUP BY And HAVING الشرط في SQL

في هذا المثال ، سنشرح الفرق بين جملة WHERE وعبارة HAVING . سنستخدم نفس الهدف الذي لدينا في المثال السابق حتى نتمكن من مقارنة النتائج وتقييمها. 

دعنا نعرض أولاً المنتجات بمبيعاتها الإجمالية باستخدام الأمر أدناه. كما ترى ، لا يزال أمرنا الأول هو نفس أمرنا الأول الذي ينفذ عبارة WHERE .

هناك شرط في وظائف SQL التجميعية

إذا أردنا تنفيذ الأمرين الأولين ، فسنحصل على النتيجة التالية:

هناك شرط في وظائف SQL التجميعية

الآن ، لنفترض أننا نريد فقط عرض المنتجات التي يزيد إجمالي مبيعاتها عن 5. لا يمكننا استخدام عبارة WHERE  نظرًا لأنه لا يمكن استخدامها إلا مع الأعمدة الموجودة. لذلك ، نحتاج إلى استخدام جملة HAVING لأننا سنقوم بالتصفية من دالة مجمعة. 

هناك شرط في وظائف SQL التجميعية

لاحظ كيف نستخدم عبارة HAVING بعد GROUP BY بخلاف عبارة WHERE المستخدمة قبل GROUP BY. هذا لأن SQL سوف يقوم بتجميع السجلات قبل أن يقوم بتقييم عبارة HAVING

دعنا بعد ذلك ننفذ هذه الأوامر مع HAVING SUM (SaleAmount)> 5 . بعد تحديد أننا نريد الحصول على المنتجات التي يزيد سعرها الإجمالي عن 5 فقط ، سنلاحظ أنه في جدول النتائج الحالي ، لن نرى القلم بعد الآن. هذا لأن إجماليه أقل من 5

هناك شرط في وظائف SQL التجميعية

باختصار ، عندما نريد تصفية البيانات من جدولنا بناءً على عمود موجود ، فإننا نستخدم جملة WHERE ، بينما عندما نريد تصفية البيانات من دالة مجمعة ، فإننا نستخدم عبارة HAVING

HAVING And Where في SQL Server Management Studio (SSMS)

الآن ، سنمضي قدمًا من خلال مناقشة وإظهار كيف يمكننا تنفيذ جملة HAVING في SQL Server Management Studio (SSMS). سنقوم أيضًا بمعالجة الاختلاف بين جملة HAVING و WHERE من خلال تقديم أمثلة.

الموضح أدناه هو نموذج بياناتنا SalesOrderHeader. تتكون هذه البيانات من 100 صف. على سبيل المثال ، نريد الحصول على TotalSale بواسطة معرف العميل حيث يكون TotalSale أكبر من 10000 . لاحظ أن إجمالي البيع يستند إلى مجموع قيم العمود TotalDue .

هناك شرط في وظائف SQL التجميعية

أولاً ، اسمحوا لي أن أوضح لماذا لا يمكننا استخدام جملة WHERE عندما نريد التصفية على دالة مجمعة بناءً على المثال أعلاه. 

سنستخدم مجموعة عينة من الأوامر من الصورة أدناه. كما ترى ، لدينا من الناحية الفنية نفس مجموعة الأوامر مثل تلك التي لدينا من مثالنا الأول.

ومع ذلك ، عند النقر فوق "تنفيذ" في الزاوية العلوية اليسرى ، سيؤدي ذلك إلى حدوث خطأ لأننا لا نستطيع استخدام جملة WHERE بمفردها عندما نقوم بالتصفية على الوظيفة التجميعية.

هناك شرط في وظائف SQL التجميعية

لتصحيح الخطأ ، نحتاج إلى تصفية النتيجة باستخدام جملة HAVING بدلاً من جملة WHERE . يجب أن تكون مجموعتنا الجديدة من الأوامر مشابهة للصورة أدناه.

هناك شرط في وظائف SQL التجميعية

الآن ، يمكننا أن نرى أنه قد تم تصحيح الخطأ الخاص بنا ويحتوي على النتائج لكل معرف عميل مع إجمالي TotalSale أكبر من 10000 .

مرة أخرى ، تُستخدم عبارة WHERE دائمًا قبل عبارة GROUP BY ، بينما تُستخدم عبارة HAVING دائمًا بعد عبارة GROUP BY .

استخدام كل من HAVING و WHERE الشرط في SQL  

في هذا المثال ، لنفترض أننا نريد استخدام جملة WHERE و HAVING في نفس الوقت. دعنا نحاول الحصول على TotalSale بواسطة معرف العميل حيث يكون TotalSale أكبر من 10000 ولكن فقط مع العملاء حيث يكون معرف المنطقة الخاص بهم مساويًا لـ 1

نظرًا لأننا نرغب في تصفية النتائج مع العملاء الذين لديهم رقم 1 كمعرّف المنطقة الخاصة بهم ، فسنستخدم جملة WHERE. لذلك يجب أن يكون أمرنا هو نفسه الأمر السابق. مرة أخرى ، قمنا بإضافة جملة WHERE قبل عبارة GROUP BY.

هناك شرط في وظائف SQL التجميعية

في الوقت الحالي ، لا يمكننا رؤية فرق كبير بين النتيجة السابقة والنتيجة الجديدة. ومع ذلك ، إذا نظرت عن كثب إلى الزاوية اليمنى السفلية ، فلدينا الآن 64 صفًا فقط مقارنةً بالصفوف السابقة التي تحتوي على 505 صفوفًا من البيانات. ذلك لأن النتائج تتم تصفيتها بناءً على معرف المنطقة أيضًا.

خاتمة

للتلخيص ، يمكننا فقط استخدام جملة WHERE مع الأعمدة الموجودة. إذا احتجنا إلى التصفية باستخدام وظائف مجمعة ، فنحن بحاجة إلى استخدام جملة HAVING بدلاً من ذلك.

يمكن أن يوفر استخدام بند HAVING في وظائف SQL التجميعية وطرق التدرب على تنفيذ بند HAVING وعبارة WHERE معًا راحة المستخدمين عند العمل على عدد كبير من البيانات أو السجلات. 

آمل أن أكون قد زودتك بمعلومات وفهم كافيين فيما يتعلق بكيفية استخدام شرط HAVING في وظائف SQL التجميعية. إذا كنت ترغب في معرفة المزيد عن هذا الموضوع والمحتويات الأخرى ذات الصلة ، يمكنك بالتأكيد التحقق من قائمة الروابط ذات الصلة أدناه.

أتمنى لك كل خير،

حافظ


ما هي الذات في بايثون: أمثلة من العالم الحقيقي

ما هي الذات في بايثون: أمثلة من العالم الحقيقي

ما هي الذات في بايثون: أمثلة من العالم الحقيقي

كيفية حفظ وتحميل ملف RDS في R.

كيفية حفظ وتحميل ملف RDS في R.

ستتعلم كيفية حفظ وتحميل الكائنات من ملف .rds في R. ستغطي هذه المدونة أيضًا كيفية استيراد الكائنات من R إلى LuckyTemplates.

تمت إعادة النظر في أول N أيام عمل - حل لغة ترميز DAX

تمت إعادة النظر في أول N أيام عمل - حل لغة ترميز DAX

في هذا البرنامج التعليمي للغة ترميز DAX ، تعرف على كيفية استخدام وظيفة الإنشاء وكيفية تغيير عنوان القياس ديناميكيًا.

اعرض الرؤى باستخدام تقنية المرئيات الديناميكية المتعددة الخيوط في LuckyTemplates

اعرض الرؤى باستخدام تقنية المرئيات الديناميكية المتعددة الخيوط في LuckyTemplates

سيغطي هذا البرنامج التعليمي كيفية استخدام تقنية Multi Threaded Dynamic Visuals لإنشاء رؤى من تصورات البيانات الديناميكية في تقاريرك.

مقدمة لتصفية السياق في LuckyTemplates

مقدمة لتصفية السياق في LuckyTemplates

في هذه المقالة ، سأقوم بتشغيل سياق عامل التصفية. يعد سياق عامل التصفية أحد الموضوعات الرئيسية التي يجب على أي مستخدم LuckyTemplates التعرف عليها في البداية.

أفضل النصائح في استخدام التطبيقات في خدمة LuckyTemplates عبر الإنترنت

أفضل النصائح في استخدام التطبيقات في خدمة LuckyTemplates عبر الإنترنت

أريد أن أوضح كيف يمكن لخدمة تطبيقات LuckyTemplates عبر الإنترنت أن تساعد في إدارة التقارير والرؤى المختلفة التي تم إنشاؤها من مصادر مختلفة.

تحليل تغييرات هامش الربح بمرور الوقت - التحليلات باستخدام LuckyTemplates و DAX

تحليل تغييرات هامش الربح بمرور الوقت - التحليلات باستخدام LuckyTemplates و DAX

تعرف على كيفية إجراء تغييرات في هامش الربح باستخدام تقنيات مثل قياس التفرع والجمع بين صيغ DAX في LuckyTemplates.

أفكار التجسيد لذاكرة التخزين المؤقت للبيانات في DAX Studio

أفكار التجسيد لذاكرة التخزين المؤقت للبيانات في DAX Studio

سيناقش هذا البرنامج التعليمي أفكار تجسيد مخازن البيانات وكيفية تأثيرها على أداء DAX ​​في توفير النتائج.

إعداد تقارير الأعمال باستخدام LuckyTemplates

إعداد تقارير الأعمال باستخدام LuckyTemplates

إذا كنت لا تزال تستخدم Excel حتى الآن ، فهذا هو أفضل وقت لبدء استخدام LuckyTemplates لاحتياجات إعداد تقارير الأعمال الخاصة بك.

ما هي بوابة LuckyTemplates؟ كل شيئ ترغب بمعرفته

ما هي بوابة LuckyTemplates؟ كل شيئ ترغب بمعرفته

ما هي بوابة LuckyTemplates؟ كل شيئ ترغب بمعرفته