פונקציית LEAD() של SQL Server

Pwnqzyyt Lead Sl Sql Server



במאמר זה, נדריך אותך דרך היסודות של עבודה עם הפונקציה lead() ב-SQL Server. נסקור מה הפונקציה עושה, התחביר שלה ודוגמאות מעשיות לשימוש בה.

פונקציית לידים של SQL Server

פונקציית ה-Lead ב-SQL Server היא פונקציה אנליטית המאפשרת לך לגשת לנתונים משורה עוקבת באותה ערכת תוצאות ללא הצטרפות עצמית.

הפונקציה מאפשרת לך לגשת לשורה בהיסט נתון לפני השורה הנוכחית. לדוגמה, באמצעות פונקציית ההובלה, ניתן למצוא את השורה מיד אחרי השורה הנוכחית, את השורה ה-10 מהשורה הנוכחית וכו'.







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



תחביר פונקציות

הבא מציג את התחביר של הפונקציה lead() ב-SQL Server:



LEAD ( scalar_expression [ , offset ] , [ ברירת מחדל ] )
OVER ( [ partition_by_clause ] order_by_clause )

הרשימה הבאה היא הארגומנטים הנתמכים והפונקציונליות שלהם:





  1. scalar_expression - ארגומנט זה מציין את ערך ההחזרה על סמך ההיסט שהוגדר. זה יכול להיות ביטוי מכל סוג שמחזיר ערך בודד. עם זאת, הערך של scalar_expression לא יכול להיות פונקציה אנליטית/חלון אחרת.
  2. offset - זה קובע כמה שורות ממיקום השורה הנוכחית הערך הובא. כברירת מחדל, הפונקציה תביא את השורה מיד לשורה הנוכחית. באופן דומה, הערך של פרמטר ההיסט לא יכול להיות פונקציה אנליטית או מספר שלם שלילי.
  3. ברירת מחדל - פרמטר זה מגדיר את ערך ברירת המחדל אם ערך ההיסט המסופק הוא מעבר להיקף מחיצת היעד. כברירת מחדל, הפונקציה תחזיר NULL.
  4. PARTITION BY – הסעיף partition_by מגדיר את הכללים המחלקים את קבוצת התוצאות לסעיפים שונים. לאחר מכן הפונקציה מוחלת על כל מחיצה שנוצרת.
  5. ORDER BY - זה מגדיר את הסדר הלוגי שבו מיושמות השורות בכל מחיצה.

הפונקציה מחזירה את סוג הנתונים שהוגדר ב-scalar_expression. אם הערך המוחזר הוא NULL, הפונקציה מחזירה NULL.

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

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



שחרר את מסד הנתונים אם קיים מלאי;

צור מלאי של מסד נתונים;

השתמש במלאי;

זרוק טבלה אם קיים מוצרים;

צור מוצרי TABLE (
id int identity מפתח ראשי לא null,
product_name varchar(100),
יצרן varchar(50),
כמות int לא אפס,
מחיר אינט ברירת מחדל 0,
in_stock bit
);
הכנס למוצרים (שם_מוצר, יצרן, כמות, מחיר, במלאי)
ערכים ('Apple iPad Air', 'Apple', 100, 569.99, 1),
('Samsung Galaxy Z Flip 4', 'Samsung', 302, 1569.00, 1),
('Sony Playstation 5', 'Sony',  500, 499.99, 1),
('Samsung Galaxy Watch-5 Pro', 'Samsung', 600, 209/.99, 1),
('Apple Watch Series 6', 'Apple', 459, 379.90, 1),
('Apple AirPods Pro', 'Apple', 200, 199.99, 1),
('55' Class S95B OLED 4K Smart TV', 'Samsung', 900, 1999.90, 1),
('Odyssey Ark Quantum Mini-LED Curved Screen Gaming', 'Samsung', 50, 2999.90, 1);

הטבלה המתקבלת היא כפי שמוצג:

דוגמה 1 - שימוש בפונקציית lead() של SQL Server על פני ערכת תוצאות

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

בחר
שם מוצר,
יַצרָן,
כַּמוּת,
מחיר,
lead(מחיר,
1) מעל (
הזמנה לפי כמות)
מ
מוצרים;

טבלה המתקבלת:

מכיוון שאין שורה מהעמודה האחרונה, הפונקציה מחזירה NULL.

דוגמה 2 - שימוש בפונקציית SQL Server lead() מעל ערכת מחיצות

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

איור לדוגמה הוא כפי שמוצג:

בחר
שם מוצר,
יַצרָן,
כַּמוּת,
מחיר,
lead(מחיר,
1) מעל (
מחיצה לפי יצרן
הזמנה לפי כמות)
מ
מוצרים;

השאילתה למעלה צריכה לחלק את השורות על סמך היצרן ולהביא את המחיר הבא עבור הערכים בכל מחיצה.

במקרה זה, יש שלוש מחיצות.

סיכום

בפוסט הזה, הבנתם את אבני הבניין של הפונקציה lead() ב-SQL Server. למדת גם כיצד להשתמש בפונקציה lead() על קבוצת תוצאה ומחיצה.