وحدات MySales

استعلامات SQL الأساسيةالإمكانيات

لإنشاء تقارير أساسية، يحتاج المستخدم إلى فهم أولي لكيفية عمل استعلامات SQL. توجد اليوم عدة لهجات لـ SQL، وستتناول هذه الوثيقة الاستعلامات بلهجة T-SQL المستخدمة في نظام إدارة قواعد البيانات MS SQL Server.

94%
دقة التنبؤ

دقة المنتجات الراسخة لدى Drogas

15-20%
نمو الإيرادات

زيادة في حجم المبيعات لدى Chudo Market بعد التطبيق

40%
تقليل الخسائر

تخفيض في شطب المنتجات الطازجة لدى Blyzenko

منصة الذكاء الاصطناعي

منصة ذكاء اصطناعي واحدة تربط التنبؤ بالطلب والتجديد والتسعير والعروض الترويجية — تتدفق الإشارات تلقائيًا بين الوحدات، مما يبقي الطلبات والأسعار والحملات متزامنة دائمًا.

رؤية

فيما يلي وصف لأوامر SQL الرئيسية المطلوبة للعمل الأساسي مع نصوص SQL البرمجية: SELECT وFROM وWHERE وJOIN وGROUP BY وORDER BY.

يمكن الاطلاع على دليل SQL ممتاز مع أمثلة وإمكانية تجربة الأوامر المختلفة عبر الرابط .

SELECT SELECT - هو الأمر الأساسي المستخدم لتحديد البيانات من قاعدة البيانات.

يُستخدم هذا الأمر عادةً مع أمر FROM الذي يحدد الجدول الذي يتم جلب البيانات منه.

كما يمكن التحديد من جداول متعددة - وسيُوضح ذلك في قسم JOIN .

يبدو الاستعلام الافتراضي لـ SELECT كالتالي: SELECT column1, column2, ...

FROM table_name; column1 وcolumn2 وما إلى ذلك في هذا الاستعلام هي أسماء الحقول (الأعمدة) في الجدول التي يريد المستخدم استرداد البيانات منها.

في حال احتاج المستخدم إلى تحديد جميع البيانات، يُستخدم الرمز *: SELECT * FROM table_name; على سبيل المثال، نتيجة الاستعلام SELECT sku_id, article_name FROM products; ستكون عمودين يحتويان على رمز SKU والاسم من جدول PRODUCTS: ونتيجة الاستعلام SELECT * FROM products; ستكون جميع الأعمدة من جدول PRODUCTS: عند إنشاء استعلامات SELECT، يُستحسن تعيين أسماء مستعارة (aliases) للأعمدة: SELECT column_1 SKU, column_2 STORE FROM table_name; في هذا المثال، SKU وSTORE هما الاسمان المستعاران للعمودين column_1 وcolumn_2 - وسيُستخدمان لاحقاً في العمل مع مصمم التقارير.

يمكن التعرف أكثر على SELECT وتجربة استخدامه عبر الرابط . يمكن التعرف أكثر على مفهوم الأسماء المستعارة عبر الرابط .

بالإضافة إلى تحديد الحقول القياسي باستخدام SELECT، يمكن أيضاً تحديد بيانات محددة.

فيما يلي الدوال الأساسية التي يمكن استخدامها مباشرةً في استعلام SELECT. SELECT DISTINCT - يُستخدم لتحديد القيم الفريدة لحقل معين.

على سبيل المثال: SELECT DISTINCT column_1 FROM table_name; سيطبع هذا الاستعلام القيم الفريدة فقط في column_1.

يمكن التعرف أكثر على SELECT DISTINCT وتجربته عبر الرابط . SELECT TOP - يُستخدم لتحديد أول N قيمة من حقل معين.

على سبيل المثال: SELECT TOP 100 column_1 FROM table_name; سيطبع هذا الاستعلام أول 100 قيمة فقط في column_1.

يمكن التعرف أكثر على SELECT TOP وتجربته عبر الرابط . MIN/MAX - يُستخدم لعرض أصغر أو أكبر القيم في عمود معين.

على سبيل المثال: SELECT MIN(column_1) FROM table_name; سيطبع هذا الاستعلام أصغر قيمة في column_1.

يمكن التعرف أكثر على MIN / MAX وتجربتهما عبر الرابط .

COUNT وAVG وSUM - تعد COUNT() لعدد الصفوف في عمود؛ وتعرض AVG() متوسط العمود؛ وتعرض SUM() مجموع جميع القيم.

SELECT COUNT(column_1) FROM table_name; سيطبع هذا الاستعلام عدد الصفوف في column_1.

SELECT AVG(column_1) FROM table_name; سيطبع هذا الاستعلام المتوسط في column_1.

SELECT SUM(column_1) FROM table_name; سيطبع هذا الاستعلام مجموع جميع القيم في column_1.

يمكن التعرف أكثر على COUNT وAVG وSUM وتجربتها عبر الرابط .

WHERE يُستخدم أمر WHERE لإنشاء شرط التحديد: SELECT column1, column2, ...

FROM table_name WHERE condition; على سبيل المثال، إذا احتاج المستخدم إلى تحديد جميع القيم الأكبر من 10، يجب تحديد شرط WHERE كالتالي: SELECT column1 FROM table_name WHERE column1 > 10; يحتوي أمر WHERE أيضاً على عوامل رياضية مثل أكبر من وأصغر من وغير مساوٍ وما إلى ذلك، وتُستخدم عند تحديد الشرط.

يمكن التعرف أكثر على WHERE والعوامل المتاحة وتجربتها عبر الرابط .

يمكن أن تحتوي WHERE على عدة شروط، ويُستخدم لتعريفها العوامل المنطقية "AND" و"OR" و"NOT".

إذا كان من الضروري استيفاء كلا الشرطين، يُستخدم AND. إذا كان من الضروري استيفاء أحد الشروط المتعددة، يُستخدم OR.

إذا أريد عرض البيانات عندما لا يتحقق الشرط، يُستخدم NOT. يمكن التعرف أكثر على AND وOR وNOT وتجربتها عبر الرابط .

عاملا IN وLIKE هما عاملا مقارنة في شرط WHERE.

يسمح IN بالتحديد عند وجود قيم متعددة، على سبيل المثال: SELECT SKU_ID, ITEM_CODE FROM PRODUCTS WHERE SKU_ID in (2,4,8) سيعرض هذا الاستعلام فقط تلك الـ SKUs التي تكون قيمة SKU_ID فيها 2 أو 4 أو 8.

يمكن التعرف أكثر على IN وتجربته عبر الرابط .

يسمح LIKE للمستخدم بالبحث عن نمط معين في البيانات من عمود ما، على سبيل المثال: SELECT SKU_ID, ARTICLE_NAME FROM PRODUCTS WHERE ARTICLE_NAME like (%Ham%) سيعرض هذا الاستعلام تلك الـ SKUs التي تحتوي على كلمة "Ham" في اسمها.

يمكن التعرف أكثر على LIKE وتجربته عبر الرابط .

كذلك في WHERE، يمكن للمستخدم التعامل مع الأعمدة التي تحتوي على قيم NULL (حقل لا يحتوي على قيمة).

لا تعمل شروط WHERE القياسية مع NULL. يجب استخدام العوامل IS NULL وIS NOT NULL.

يمكن التعرف أكثر على IS NULL وIS NOT NULL وتجربتهما عبر الرابط .

ORDER BY يسمح أمر ORDER BY للمستخدم بفرز مخرجات البيانات وفق قواعد معينة. SELECT column1, column2, ...

FROM table_name WHERE condition ORDER_BY column1 asc/desc يمكن التعرف أكثر على ORDER BY وتجربته عبر الرابط .

JOIN يُستخدم أمر JOIN بعد أمر FROM ويُستخدم لعرض الأعمدة في استعلام من جداول مختلفة مرتبطة ببعضها.

فعلى سبيل المثال، إذا كان هناك جدول PRODUCTS يحتوي على الأعمدة SKU_ID وGROUP_ID وجدول GROUPS يحتوي على الأعمدة GROUP_ID وGROUP_NAME، فإن JOIN سيسمح للمستخدم بتحديد بيانات SKU_ID وGROUP_NAME من جداول مختلفة مع ربطها بواسطة GROUP_ID.

توجد عدة أنواع من JOINs: (INNER) JOIN - يمكن استخدامه مع البادئة INNER أو بدونها - يعرض فقط تلك السجلات التي تحتوي على نفس القيم في كلا الجدولين؛ LEFT JOIN - يعرض جميع السجلات من الجدول الأيسر (كما هو محدد بواسطة FROM) والسجلات المقابلة من الجدول الأيمن (كما هو محدد بواسطة JOIN)؛ RIGHT JOIN - يعرض جميع السجلات من الجدول الأيمن (كما هو محدد بواسطة JOIN) والسجلات المقابلة من الجدول الأيسر (كما هو محدد بواسطة FROM)؛ FULL JOIN - يعرض جميع السجلات إذا كان هناك تطابق في الجدول الأيسر أو الأيمن؛ يمكن التعرف أكثر على JOIN وتجربته عبر الرابط .

يمكن للمستخدم دراسة وتجربة كل نوع من أنواع JOIN بمزيد من التفصيل عبر الروابط التالية: (INNER) JOIN ، LEFT JOIN ، RIGHT JOIN ، FULL JOIN .

GROUP BY يُستخدم أمر GROUP BY بعد أمر WHERE ويُستخدم لتجميع البيانات حسب التشابه.

فعلى سبيل المثال، يمكن للمستخدم تجميع جميع المنتجات التي تحتوي على نفس الرمز.

يُستخدم إذا كانت هناك دوال تجميع بعد SELECT في الاستعلام - مثل COUNT وMAX وMIN وSUM وAVG وما إلى ذلك.

SELECT column1, sum(column2) FROM table_name WHERE condition GROUP BY column1 ORDER_BY column1 asc/desc مثال جيد على استخدام GROUP BY عندما يحتاج المستخدم إلى عرض، على سبيل المثال، المبيعات لـ 4 أسابيع (من الأسبوع العاشر إلى الأسبوع الثالث عشر من عام 2019) في سياق SKU المحدد لمتجرين.

في جدول SALES_SKU، يتم تفصيل المبيعات حسب الأسبوع، ونحتاج إلى جمع المبيعات لـ 4 أسابيع للحصول على إجمالي المبيعات لتلك الأسابيع.

في مثل هذه الحالة، سيبدو الاستعلام كالتالي: SELECT sku_id, store_id, sum(sales_volume) vol FROM sales_sku WHERE sku_id = 93 and week between 201910 and 201913 and store_id in (1,2) GROUP BY sku_id, store_id ORDER_BY vol asc نتيجة تنفيذ مثل هذا الاستعلام هي كالتالي: من المهم أن GROUP BY يجب تحديده ليس فقط بـ SKU_ID، بل أيضاً بـ STORE_ID، نظراً لأن هذين الحقلين لا يُستخدمان في دالة التجميع.

وإذا حدد المستخدم GROUP BY SKU_ID فقط، فسيعطي النظام خطأ مفاده أن STORE_ID لم يُطبَّق لا في GROUP BY ولا في أي دالة تجميع أخرى.

يمكن التعرف أكثر على GROUP BY وتجربته عبر الرابط .