وظيفة الرصاص SQL

Wzyft Alrsas Sql



تسمح لك وظيفة SQL Lead() بالوصول إلى الصف التالي من الصف الحالي بإزاحة محددة. باختصار، تتيح لك الدالة Lead() الوصول إلى الصف التالي من الصف الحالي. من خلال تحديد قيمة الإزاحة، يمكنك الوصول إلى الصفوف 1، 2، 3 التالية، وما إلى ذلك، من الصف الحالي.

إنها عكس الدالة lag() التي تسمح لك بالوصول إلى الصفوف السابقة.







وظيفة SQL Lead()

بناء جملة الوظيفة كما يلي:



الرصاص (تعبير_القيمة، الإزاحة [، الافتراضي])
زيادة (
[التقسيم حسب Partition_expression]
ORDER BYsort_expression [ASC | DESC]
);

فيما يلي الوسائط المدعومة:



  1. value_expression - يحدد القيمة المرجعة للصف السابق. يجب تقييم التعبير إلى قيمة واحدة.
  2. عوض - يحدد عدد الصفوف المقبلة من الصف الحالي للوصول إليها.
  3. تقصير - يقوم بتعيين القيمة الافتراضية إذا كانت الإزاحة خارج نطاق القسم. بشكل افتراضي، يتم تعيين القيمة إلى NULL.
  4. التقسيم بواسطة - يحدد كيفية تقسيم البيانات.
  5. ترتيب حسب – يقوم بتعيين تنسيق الترتيب للصفوف في كل قسم.

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

قبل أن نتعمق في طريقة عمل الدالة Lead()، فلنبدأ بإعداد الجدول الأساسي لأغراض العرض التوضيحي.





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

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

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

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

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

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

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

'2023-03-13'،
6470981735653)؛

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

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

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

إدراج
داخل
المنتجات (اسم_المنتج،
فئة،
سعر،
كمية،
تاريخ انتهاء الصلاحية،
الباركود)

القيم ('دي سي هيكياج هيرا هوبا'،
'ينتج'،
56.29،
53،
'2023-04-14'،
3354910667072);

مثال 1:

في هذه الحالة، يمكننا الوصول إلى جدول 'المنتجات' الذي يحتوي على معلومات المنتج. لنفترض أننا نريد الحصول على الرمز الشريطي التالي من الصف الحالي.

يمكننا استخدام الدالة Lead() كما يلي:



لنفترض أن لدينا جدول يحتوي على معلومات الموظف على النحو التالي:

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

يقوم الكود المحدد بتقسيم البيانات بناءً على الفئة. ثم يقوم بجلب الرمز الشريطي التالي في القسم باستخدام وظيفة Lead().

الناتج الناتج هو كما يلي:

مثال 2:

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

لتعيين قيمة افتراضية لأي وصول خارج النطاق، يمكننا القيام بما يلي:

يختار
اسم المنتج،
سعر،
الرصاص (الرمز الشريطي، 1، 'N/A') على (التقسيم حسب الفئة
ترتيب حسب
السعر تصاعدي) كـ next_item
من
المنتجات ع؛

قمنا بتعيين القيمة الافتراضية على 'N/A'. يجب أن يحل هذا محل أي قيمة خارجة عن الحد كما هو موضح في الإخراج التالي:

ملحوظة : ضبط الإزاحة على 1 يشبه عدم تحديد أي قيمة.

مثال 3:

لنفترض أنك تريد الوصول إلى الصفين التاليين من الصف الحالي. يمكننا القيام بذلك عن طريق ضبط قيمة الإزاحة على 2.

يتم توضيح مثال الاستعلام في ما يلي:

يختار
اسم المنتج،
سعر،
الرصاص (الرمز الشريطي، 2، 'N/A') على (التقسيم حسب الفئة
ترتيب حسب
السعر تصاعدي) كـ next_item
من
المنتجات ع؛

يقوم هذا الاستعلام بإرجاع الصفين التاليين في كل قسم كما هو موضح في ما يلي:

ها أنت ذا!

خاتمة

في هذا البرنامج التعليمي، تعلمنا كيفية العمل مع الدالة Lead() للحصول على العنصر التالي من الصف الحالي.