عبدالرحمن مصيباح
عبدالرحمن مصيباح

@ProAbdulrahmna

14 تغريدة 4 قراءة Mar 08, 2022
ما قد تساءلت شنو يعني group by في #sql ؟
طيب شالفرق بينها وبين aggregate functions ؟
[ سلسلة تغريدات مع تطبيق عملي ]
فالبداية اذا ودك تطبق معي، هذه dummy data سويتها موجودة في github
github.com
وهذا الجدول اللي راح نشتغل عليه
مستعد؟اخذت عليه طلة؟ هووبا
شنو يعني GROUP BY ؟
هو أمر في sql يجمّع القيم المتشابهة
بحيث العمود اللي نسوّي له GROUP ماراح تكون فيه قيم متكررة؛ لأنه جمّعهم
تمام
راح نشوف طريقة الكتابة
الحين سوينا استعلام يجيب الداتا بشكل طبيعي
واستعلام آخر باستخدام GROUP BY
لاحظتوا الفرق؟
مثال ثاني لنفس الفكرة
راح نجيب الأقسام
شفتوا الفرق بين الـ group والعادي؟
طيب أكيد راح تسأل الحين انا وش استفدت من المعلومات هذه؟
هنا تجي فكرة الـ Aggregate functions !
الـ aggregate function راح تخلي الـ group له معنى
هنا سويت جدول لهم مع المعنى
وطريقة الكتابة (syntax)
ناخذ مثال الحين عليها
بنستخدم MAX، وهي راح تجيبلي أعلى راتب
اذا استخدمنا aggregate function راح تكون النتيجة من صف واحد فقط
الآن فهمنا شنو يعني aggregate function وشنو يعني group by
أفضل طريقة عشان نقدر نتعمق فيهم، هي بالأمثلة الواقعية
تخيّل جاك مسؤول الموارد بشرية وقالك ابي اعرف كل قسم فيه كم موظف
*ملاحظة هامة
اذا استعلمنا أي وحدة فيهم، لازم كل الأعمدة نحط لهم.
يعني اذا استخدمنا max في عمود، لازم الأعمدة الثانية نخليهم group، او نحط لهم aggregate، عشان يكون الاستعلام منطقي
هذا طلب الموارد البشرية👇
تخيل جاك المحاسب وقالك كم رواتب موظفين الدمام
*نلاحظ اني استخدمت HAVING
نفس فكرة الـ where لكن على group، والفرق بينهم ان الـ HAVING بتنفذ بعد ما ينتهي الـ group
تخيل رجع لك حق الموارد البشرية مرة ثانية (هم كذا نشبة) وقالك ابي عدد الذكور والإناث بالشركة
* داخل الـ count استخدمت id ، لأنه أخف عمود على الجدول، البعض يحط (*)، لكنها ممارسة غير جيدة
تخيل اتصل عليك المدير وقالك كم متوسط الرواتب لكل قسم؟
تخيل واحد ملقوف برى الشركة وقالك كم مجموع رواتب قسم الـ IT ؟
لا طبعا ماراح تقوله
مسؤول قواعد البيانات عنده معلومات حساسة عن الشركة، فلمّا الله يرزقك وتكون في المنصب هذا
احفظ الأمانة
— انتهى —
أتمنى كان شرح جميل وواضح
اذا كان عندك استفسار حياك الخاص
السلسلة الجاية بإذن الله بتكون عن كيف تحسّن من كتابة الاستعلام (query)

جاري تحميل الاقتراحات...