دوال LEAD و LAG
جزء من قسم الأساسيات في رحلة SQL على Coddy. الدرس 61 من 72.
تتيح لنا الدالتان LEAD وLAG الوصول إلى قيمة الصف الحالي بعدد n من الخطوات إلى الخلف أو بعدد n من الخطوات إلى الأمام.
على سبيل المثال، إذا أردنا حساب نسبة revenue الشركة للصف الحالي وقبل شهر واحد، فيمكننا استخراج القيمة من الشهر السابق:
| id | revenue | month |
| 1 | 532 | 5 |
| 2 | 492 | 6 |
| 3 | 393 | 7 |
| 4 | 723 | 8 |
SELECT id, revenue, LAG(revenue, 1) OVER (ORDER BY MONTH) as prev_month_revenue
FROM table1 ORDER BY idسيُنشئ هذا الجدول التالي:
| id | revenue | prev_month_revenue |
| 1 | 532 | |
| 2 | 492 | 532 |
| 3 | 393 | 492 |
| 4 | 723 | 393 |
بهذه الطريقة يمكننا حساب نسبة prev_month_revenue/revenue.
إذا استخدمنا بدلًا من ذلك الدالة LEAD، فستأخذ إيراد الشهر التالي لكل صف:
SELECT id, revenue, LEAD(revenue, 1) OVER (ORDER BY MONTH) as next_month_revenue
FROM table1 ORDER BY id| id | revenue | next_month_revenue |
| 1 | 532 | 492 |
| 2 | 492 | 393 |
| 3 | 393 | 723 |
| 4 | 723 |
التحدي
سهلالجداول والأعمدة المتاحة:
air_conditioners:id،efficiency،strength،month
قارن كفاءة كل مكيّف هواء بكفاءة المكيّف السابق.
اكتب استعلامًا يعرض كفاءة كل مكيّف هواء إلى جانب كفاءة مكيّف الهواء السابق الذي تم تركيبه (استنادًا إلى id). احسب أيضًا الفرق في الكفاءة بين مكيّف الهواء الحالي والسابق. رتّب النتيجة حسب id وefficiency بترتيب تصاعدي.
أعمدة الناتج المتوقعة:
idefficiencyprevious_efficiency(باستخدام LAG)efficiency_difference(الكفاءة الحالية - الكفاءة السابقة)
أخيرًا، غلّف الاستعلام وصفِّ الصف الأول، الذي تكون فيه قيمة previous_efficiency (وبالتالي efficiency_difference) فارغة، أي NULL:
SELECT * FROM (
-- Your query here
)
WHERE previous_efficiency IS NOT NULLجرّب بنفسك
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
2الشروط
أساسيات الشروطالكلمة المفتاحية ANDالكلمة المفتاحية ORالكلمة المفتاحية NOTدمج شروط متعددةالأقواسالقيم المنطقية Booleans8الإحصاء
دوال التجميع المدمجة - الجزء الأولدوال التجميع المدمجة - الجزء الثانيالتجميع - الجزء الأولالتجميع - الجزء الثانيالاستعلامات الفرعية - الجزء الأولالاستعلامات الفرعية - الجزء الثانيمراجعة - متجر إجمالي الأرباحمراجعة - متجر السكوترمراجعة - متجر القهوة11دوال النافذة - الجزء الأول
دالة ROW_NUMBERمعيار ORDER BYمعيار PARTITION BYPARTITION و ORDERدوال LEAD و LAGملخص - LEAD و LAGملخص - الصورملخص - الصناديق3تنسيق محدد للنتائج
قيم Nullترتيب النتائج - الجزء الأولترتيب النتائج - الجزء الثانيمراجعة - شركة للأمن السيبرانيتحديد عدد السجلاتمراجعة - مصنع مركبات6تحديات تمهيدية
مراجعة - الانتخابات البرلمانيةمراجعة - اعتقال الشرطة للمجرمينمراجعة - حاوية مشروبات البارمراجعة - هندسة أعمدة جديدة9جداول متعددة
الربط الأساسي - الجزء الأولالربط الأساسي - الجزء الثانيمراجعة - الربط (Join)الربط الذاتي (Self Join)مراجعة - الربط الذاتي (Self Join)الاتحاد (Union)تبسيط الاستعلامات، الكلمة المفتاحية WITHمراجعة - استعلامات WITHمراجعة - مقاول العقارات12Window Functions الجزء الثاني
دوال RANK و DENSE_RANKمراجعة - RANK و DENSE_RANKدالة NTILEدوال التجميعمعيار ROWS و RANGEتدرّب بنفسك: Playground لـ SQL