GROUP BY clause

From binaryoption
Jump to navigation Jump to search
Баннер1

عبارة GROUP BY في لغة SQL: دليل شامل للمبتدئين

مقدمة

تُعد عبارة `GROUP BY` من أقوى وأكثر عبارات لغة SQL استخدامًا. تسمح لك بتجميع الصفوف التي لها قيم متطابقة في عمود واحد أو أكثر، ثم إجراء عمليات حسابية على هذه المجموعات. هذا مفيد بشكل خاص في تحليل البيانات واستخلاص رؤى ذات معنى من قواعد البيانات الكبيرة. في هذا المقال، سنشرح بالتفصيل كيفية عمل `GROUP BY` مع أمثلة عملية، وكيفية دمجها مع الدوال التجميعية للحصول على نتائج قوية.

ما هي عبارة GROUP BY؟

ببساطة، تقوم `GROUP BY` بتقسيم البيانات إلى مجموعات بناءً على قيم محددة في عمود أو مجموعة أعمدة. تخيل أن لديك جدولًا يحتوي على بيانات مبيعات لمنتجات مختلفة. باستخدام `GROUP BY`، يمكنك تجميع المبيعات حسب المنتج لمعرفة إجمالي المبيعات لكل منتج.

بناء الجملة

بناء الجملة الأساسي لعبارة `GROUP BY` هو:

```sql SELECT column1, column2, ... , function(columnX) FROM table_name WHERE condition GROUP BY column1, column2, ... ORDER BY columnY; ```

  • `SELECT`: يحدد الأعمدة التي تريد عرضها في النتيجة.
  • `FROM`: يحدد الجدول الذي تريد الاستعلام منه.
  • `WHERE`: (اختياري) يحدد شروطًا لتصفية الصفوف قبل التجميع.
  • `GROUP BY`: يحدد الأعمدة التي سيتم التجميع بناءً عليها.
  • `ORDER BY`: (اختياري) يحدد ترتيب عرض النتائج.
  • `function(columnX)`: هي دالة تجميعية مثل `SUM()`, `AVG()`, `COUNT()`, `MIN()`, `MAX()`.

الدوال التجميعية مع GROUP BY

لا تعمل `GROUP BY` بمفردها بشكل فعال. غالبًا ما يتم استخدامها مع الدوال التجميعية للحصول على معلومات موجزة عن كل مجموعة. إليك بعض الدوال التجميعية الشائعة:

  • `COUNT()`: تحسب عدد الصفوف في كل مجموعة.
  • `SUM()`: تحسب مجموع القيم في عمود معين لكل مجموعة.
  • `AVG()`: تحسب متوسط القيم في عمود معين لكل مجموعة.
  • `MIN()`: تجد أصغر قيمة في عمود معين لكل مجموعة.
  • `MAX()`: تجد أكبر قيمة في عمود معين لكل مجموعة.

أمثلة عملية

لنأخذ مثالاً بسيطًا: لدينا جدول باسم `Orders` يحتوي على الأعمدة التالية: `OrderID`, `CustomerID`, `OrderDate`, `Amount`.

جدول Orders
CustomerID | OrderDate | Amount | 101 | 2023-10-26 | 100 | 102 | 2023-10-27 | 150 | 101 | 2023-10-28 | 200 | 103 | 2023-10-29 | 50 | 102 | 2023-10-30 | 120 |
    • مثال 1: حساب إجمالي مبلغ الطلبات لكل عميل:**

```sql SELECT CustomerID, SUM(Amount) AS TotalAmount FROM Orders GROUP BY CustomerID; ```

ستكون النتيجة:

إجمالي مبلغ الطلبات لكل عميل
TotalAmount | 300 | 270 | 50 |
    • مثال 2: حساب عدد الطلبات لكل عميل:**

```sql SELECT CustomerID, COUNT(*) AS NumberOfOrders FROM Orders GROUP BY CustomerID; ```

ستكون النتيجة:

عدد الطلبات لكل عميل
NumberOfOrders | 2 | 2 | 1 |

جملة HAVING

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

    • مثال: عرض العملاء الذين لديهم إجمالي طلبات أكبر من 250:**

```sql SELECT CustomerID, SUM(Amount) AS TotalAmount FROM Orders GROUP BY CustomerID HAVING SUM(Amount) > 250; ```

اعتبارات هامة

  • يجب أن تحتوي أي أعمدة في عبارة `SELECT` ليست جزءًا من دالة تجميعية، أن تكون أيضًا في عبارة `GROUP BY`.
  • تأكد من فهمك لأداء الاستعلامات التي تستخدم `GROUP BY`، خاصةً مع الجداول الكبيرة. استخدام الفهارس يمكن أن يحسن الأداء بشكل كبير.
  • يمكنك استخدام `GROUP BY` مع عدة أعمدة لإنشاء مجموعات أكثر تحديدًا.

تطبيقات متقدمة

  • Subqueries: يمكن استخدام `GROUP BY` داخل الاستعلامات الفرعية للحصول على نتائج أكثر تعقيدًا.
  • JOINs: يمكن دمج `GROUP BY` مع عمليات الربط (`JOIN`) لجمع البيانات من جداول متعددة ثم تجميعها.
  • Window Functions: توفر وظائف النافذة بدائل قوية لـ `GROUP BY` في بعض الحالات، خاصةً عندما تحتاج إلى الوصول إلى البيانات الأصلية مع إجراء العمليات الحسابية.

علاقة GROUP BY بتداول الخيارات الثنائية (مفاهيم مشابهة)

على الرغم من أن `GROUP BY` هي عبارة SQL، إلا أن مفهوم التجميع والتحليل الإحصائي يمكن مقارنته بتقنيات مستخدمة في تداول الخيارات الثنائية. على سبيل المثال:

  • **تحليل الاتجاهات (Trend Analysis):** تجميع البيانات التاريخية لتحديد الاتجاهات السعرية.
  • **تحديد مستويات الدعم والمقاومة (Support and Resistance Levels):** تجميع البيانات السعرية لتحديد المستويات الرئيسية التي يمكن أن تؤثر على حركة السعر.
  • **إدارة المخاطر (Risk Management):** تجميع الصفقات بناءً على خصائصها (مثل الأصول، وقت انتهاء الصلاحية) لتقييم المخاطر الإجمالية.
  • **استراتيجية مارتينجال (Martingale Strategy):** تجميع الخسائر لزيادة حجم التداول التالي.
  • **استراتيجية فيبوناتشي (Fibonacci Strategy):** تجميع البيانات لتحديد مستويات فيبوناتشي المحتملة.
  • **استراتيجية الاختراق (Breakout Strategy):** تجميع البيانات لتحديد نقاط الاختراق المحتملة.
  • **استراتيجية المتوسطات المتحركة (Moving Average Strategy):** تجميع البيانات لحساب المتوسطات المتحركة.
  • **مؤشر القوة النسبية (RSI):** يعتمد على تجميع التغيرات السعرية.
  • **مؤشر MACD:** يعتمد على تجميع المتوسطات المتحركة.
  • **تحليل حجم التداول (Volume Analysis):** تجميع حجم التداول لتحديد قوة الاتجاهات.
  • **استراتيجية بولينجر باند (Bollinger Bands Strategy):** تجميع البيانات لحساب نطاقات بولينجر.
  • **استراتيجية القنوات السعرية (Price Channel Strategy):** تجميع البيانات لتحديد القنوات السعرية.
  • **استراتيجية التداول المتأرجح (Swing Trading Strategy):** تجميع البيانات لتحديد نقاط الدخول والخروج.
  • **استراتيجية التداول اليومي (Day Trading Strategy):** تجميع البيانات لاتخاذ قرارات تداول سريعة.
  • **تحليل الشموع اليابانية (Candlestick Pattern Analysis):** تجميع المعلومات من الشموع اليابانية.

روابط ذات صلة


ابدأ التداول الآن

سجل في IQ Option (الحد الأدنى للإيداع $10) افتح حساباً في Pocket Option (الحد الأدنى للإيداع $5)

انضم إلى مجتمعنا

اشترك في قناة Telegram الخاصة بنا @strategybin للحصول على: ✓ إشارات تداول يومية ✓ تحليلات استراتيجية حصرية ✓ تنبيهات باتجاهات السوق ✓ مواد تعليمية للمبتدئين

Баннер