פונקציית SQL Lead

Pwnqzyyt Sql Lead



הפונקציה SQL lead() מאפשרת לך לגשת לשורה הבאה מהשורה הנוכחית בהיסט ספציפי. בקיצור, הפונקציה lead() מאפשרת לך לגשת לשורה הבאה מהשורה הנוכחית. על ידי ציון ערך ההיסט, תוכל לגשת לשורות 1, 2, 3 וכו' הבאות מהשורות הנוכחיות.

זה ההפך מהפונקציה lag() המאפשרת לך לגשת לשורות הקודמות.







פונקציית SQL Lead()

תחביר הפונקציה הוא כדלקמן:



LEAD(value_expression, offset [, default])
על (
[PARTITION BY partition_expression]
ORDER BY sort_expression [ASC | DESC]
);

להלן הטיעונים הנתמכים:



  1. ביטוי_ערך – הוא מציין את ערך ההחזרה של השורה הקודמת. הביטוי חייב להעריך לערך בודד.
  2. לְקַזֵז - הוא מציין כמה שורות קדימה מהשורה הנוכחית לגשת.
  3. בְּרִירַת מֶחדָל - הוא קובע את ערך ברירת המחדל אם ההיסט הוא מחוץ להיקף המחיצה. כברירת מחדל, הערך מוגדר ל-NULL.
  4. מחיצה על ידי - הוא מפרט כיצד לחלק את הנתונים.
  5. מיין לפי - הוא מגדיר את פורמט הסדר עבור השורות בכל מחיצה.

הגדרת נתונים לדוגמה

לפני שנצלול לפעולה של הפונקציה lead(), הבה נתחיל בהגדרת הטבלה הבסיסית למטרות הדגמה.





צור מוצרי TABLE (
product_id INT PRIMARY KEY AUTO_INCREMENT,
product_name VARCHAR(255),
קטגוריה VARCHAR(255),
price DECIMAL(10, 2),
כמות INT,
expiration_date DATE,
ברקוד BIGINT
);

לְהַכנִיס
לְתוֹך
מוצרים (שם_מוצר,
קטגוריה,
מחיר,
כַּמוּת,
תאריך תפוגה,
ברקוד)
ערכים ('כובע שף 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);

לְהַכנִיס
לְתוֹך
מוצרים (שם_מוצר,
קטגוריה,
מחיר,
כַּמוּת,
תאריך תפוגה,
ברקוד)
ערכים ('יין - Prosecco Valdobiaddene',
'ליצר',
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);

לְהַכנִיס
לְתוֹך
מוצרים (שם_מוצר,
קטגוריה,
מחיר,
כַּמוּת,
תאריך תפוגה,
ברקוד)

ערכים ('Dc Hikiage Hira Huba',
'ליצר',
56.29,
53,
'2023-04-14',
3354910667072);

דוגמה 1:

במקרה זה, יש לנו גישה לטבלת 'מוצרים' המכילה את פרטי המוצר. נניח שאנו רוצים לקבל את הברקוד הבא מהשורה הנוכחית.

אנו יכולים להשתמש בפונקציה lead() באופן הבא:



נניח שיש לנו טבלה המכילה מידע על עובד באופן הבא:

בחר
שם מוצר,
מחיר,
lead(barcode) over (מחיצה לפי קטגוריה
מיין לפי
מחיר asc) בתור פריט_הבא
מ
מוצרים p;

הקוד הנתון מחלק את הנתונים על סמך הקטגוריה. לאחר מכן הוא מביא את הברקוד הבא במחיצה באמצעות הפונקציה lead() .

הפלט המתקבל הוא כדלקמן:

דוגמה 2:

אם אין שורה הבאה בעמודה מסוימת (מחוץ לתחום), הפונקציה מגדירה את הערך ל-NULL כפי שמוצג בדוגמה הקודמת.

כדי להגדיר ערך ברירת מחדל עבור כל גישה מחוץ לתחום, נוכל לבצע את הפעולות הבאות:

בחר
שם מוצר,
מחיר,
lead(barcode, 1, 'N/A') over (מחיצה לפי קטגוריה
מיין לפי
מחיר asc) בתור פריט_הבא
מ
מוצרים p;

הגדרנו את ערך ברירת המחדל ל-'N/A'. זה אמור להחליף כל ערך מחוץ לתחום כפי שמוצג בפלט הבא:

הערה : הגדרת ההיסט ל-1 דומה לאי ציון ערך כלשהו.

דוגמה 3:

נניח שאתה רוצה לגשת לשתי השורות הבאות מהשורה הנוכחית. נוכל לעשות זאת על ידי הגדרת ערך ההיסט ל-2.

שאילתה לדוגמה מומחשת בהודעה הבאה:

בחר
שם מוצר,
מחיר,
lead(barcode, 2, 'N/A') over (מחיצה לפי קטגוריה
מיין לפי
מחיר asc) בתור פריט_הבא
מ
מוצרים p;

שאילתה זו מחזירה את שתי השורות הבאות בכל מחיצה כפי שמוצג להלן:

הנה לך!

סיכום

במדריך זה, למדנו כיצד לעבוד עם הפונקציה lead() כדי לקבל את הפריט הבא מהשורה הנוכחית.