قسم SQL حسب البند

Qsm Sql Hsb Albnd



في SQL، تسمح لنا جملة PARTITION BY بتقسيم أو تقسيم مجموعة النتائج لاستعلام معين إلى مجموعات مختلفة بناءً على عمود واحد أو أكثر. يمكن أن تكون الأقسام الناتجة مفيدة جدًا خاصةً عندما تحتاج إلى إجراء العمليات الحسابية لكل قسم (على حدة) أو تطبيق الوظائف المجمعة داخل كل مجموعة.

في هذا البرنامج التعليمي، سوف نتعلم كيفية عمل جملة PARTITION BY في SQL ونكتشف كيف يمكننا استخدامها لتقسيم البيانات لمجموعة فرعية أكثر تفصيلاً.

بناء الجملة:

لنبدأ بتركيب جملة PARTITION BY. قد يعتمد بناء الجملة على السياق الذي تستخدمه فيه ولكن إليك بناء الجملة العام:







حدد العمود 1، العمود 2، ...

أكثر من (التقسيم حسب Partition_column1، Partition_column2، ...)

من اسم الجدول

يمثل بناء الجملة المحدد العناصر التالية:



  1. column1, column2 - يشير هذا إلى الأعمدة التي نرغب في تضمينها في مجموعة النتائج.
  2. التقسيم حسب الأعمدة - يحدد هذا البند كيف نرغب في تقسيم البيانات أو تجميعها.

بيانات العينة

دعونا ننشئ جدولًا أساسيًا يحتوي على نموذج بيانات لتوضيح كيفية استخدام جملة PARTITION BY. في هذا المثال، لنقم بإنشاء جدول أساسي يخزن معلومات المنتج.



إنشاء منتجات الجدول (
Product_id INT المفتاح الأساسي AUTO_INCREMENT،
اسم المنتج VARCHAR( 255
فئة فارتشار( 255
السعر العشري( 10 , 2
كمية إنت,
تاريخ انتهاء الصلاحية التاريخ،
الباركود الكبير
);

إدراج
داخل
المنتجات (اسم_المنتج،
فئة،
سعر،
كمية،
تاريخ انتهاء الصلاحية،
الباركود)
قيم ( 'قبعة الشيف 25 سم' ,
'مخبز' ,
24.67 ,
57 ,
'2023-09-09' ,
2854509564204 );

إدراج
داخل
المنتجات (اسم_المنتج،
فئة،
سعر،
كمية،
تاريخ انتهاء الصلاحية،
الباركود)
قيم ( 'بيض السمان - معلب' ,
'مخزن' ,
17.99 ,
67 ,
'2023-09-29' ,
1708039594250 );

إدراج
داخل
المنتجات (اسم_المنتج،
فئة،
سعر،
كمية،
تاريخ انتهاء الصلاحية،
الباركود)
قيم ( 'قهوة - بيض نوج كابوتشينو' ,
'مخبز' ,
92.53 ,
10 ,
'2023-09-22' ,
8704051853058 );

إدراج
داخل
المنتجات (اسم_المنتج،
فئة،
سعر،
كمية،
تاريخ انتهاء الصلاحية،
الباركود)
قيم ( 'الكمثرى - الشائك' ,
'مخبز' ,
65.29 ,
48 ,
'2023-08-23' ,
5174927442238 );

إدراج
داخل
المنتجات (اسم_المنتج،
فئة،
سعر،
كمية،
تاريخ انتهاء الصلاحية،
الباركود)
قيم ( 'المعكرونة - شعر الملاك' ,
'مخزن' ,
48.38 ,
59 ,
'2023-08-05' ,
8008123704782 );

إدراج
داخل
المنتجات (اسم_المنتج،
فئة،
سعر،
كمية،
تاريخ انتهاء الصلاحية،
الباركود)
قيم ( 'النبيذ - بروسيكو فالدوبياديني' ,
'ينتج' ,
44.18 ,
3 ,
'2023-03-13' ,
6470981735653 );

إدراج
داخل
المنتجات (اسم_المنتج،
فئة،
سعر،
كمية،
تاريخ انتهاء الصلاحية،
الباركود)
قيم ( 'معجنات - فرنسية صغيرة متنوعة' ,
'مخزن' ,
36.73 ,
52 ,
'2023-05-29' ,
5963886298051 );

إدراج
داخل
المنتجات (اسم_المنتج،
فئة،
سعر،
كمية،
تاريخ انتهاء الصلاحية،
الباركود)
قيم ( 'برتقال - معلب، مندرين' ,
'ينتج' ,
65.0 ,
1 ,
'2023-04-20' ,
6131761721332 );

إدراج
داخل
المنتجات (اسم_المنتج،
فئة،
سعر،
كمية،
تاريخ انتهاء الصلاحية،
الباركود)
قيم ( 'كتف الخنزير' ,
'ينتج' ,
55.55 ,
73 ,
'2023-05-01' ,
9343592107125 );

إدراج
داخل
المنتجات (اسم_المنتج،
فئة،
سعر،
كمية،
تاريخ انتهاء الصلاحية،
الباركود)
قيم ( 'دي سي هيكياج هيرا هوبا' ,
'ينتج' ,
56.29 ,
53 ,
'2023-04-14' ,
3354910667072 );

بمجرد الانتهاء من إعداد البيانات النموذجية، يمكننا المتابعة واستخدام جملة PARTITION BY.





الاستخدام الأساسي

لنفترض أننا نريد حساب إجمالي العناصر لكل فئة منتج في الجدول السابق. يمكننا استخدام PARTITION BY لتقسيم العناصر إلى فئات فريدة ومن ثم تحديد إجمالي الكمية في كل فئة.

مثال على النحو التالي:



يختار
اسم المنتج،
فئة،
كمية،
SUM(الكمية) على (التقسيم حسب الفئة) كمجموع_العناصر
من
منتجات؛

لاحظ أنه في المثال المذكور، قمنا بتقسيم البيانات باستخدام عمود 'الفئة'. نستخدم بعد ذلك الدالة التجميعية SUM() لتحديد إجمالي العناصر في كل فئة على حدة. تظهر النتيجة إجمالي العناصر في كل فئة.

استخدام البند PARTITION BY

لتلخيص ذلك، فإن حالة الاستخدام الأكثر شيوعًا لعبارة PARTITION BY هي بالتزامن مع وظائف النافذة. يتم تطبيق وظيفة النافذة على كل قسم على حدة.

تتضمن بعض وظائف النافذة الشائعة المستخدمة مع PARTITION BY ما يلي:

  • SUM () - حساب مجموع عمود داخل كل قسم.
  • AVG () - حساب متوسط ​​العمود داخل كل قسم.
  • COUNT () - حساب عدد الصفوف داخل كل قسم.
  • ROW_NUMBER () - قم بتعيين رقم صف فريد لكل صف داخل كل قسم.
  • RANK () - قم بتعيين رتبة لكل صف داخل كل قسم.
  • DENSE_RANK () - قم بتعيين رتبة كثيفة لكل صف داخل كل قسم.
  • NTILE() – تقسيم البيانات إلى كميات داخل كل قسم.

هذا كل شيء!

خاتمة

في هذا البرنامج التعليمي، تعلمنا كيفية العمل مع جملة PARTITION BY في SQL لتقسيم البيانات إلى أجزاء مختلفة ثم تطبيق عملية محددة على كل قسم من الأقسام الناتجة بشكل منفصل.