Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

دوال LEAD و LAG

جزء من قسم الأساسيات في رحلة SQL على Coddy. الدرس 61 من 72.

تتيح لنا الدالتان LEAD وLAG الوصول إلى قيمة الصف الحالي بعدد n من الخطوات إلى الخلف أو بعدد n من الخطوات إلى الأمام.

على سبيل المثال، إذا أردنا حساب نسبة revenue الشركة للصف الحالي وقبل شهر واحد، فيمكننا استخراج القيمة من الشهر السابق:

idrevenuemonth
15325
24926
33937
47238
SELECT id, revenue, LAG(revenue, 1) OVER (ORDER BY MONTH) as prev_month_revenue
FROM table1 ORDER BY id

سيُنشئ هذا الجدول التالي:

idrevenueprev_month_revenue
1532 
2492532
3393492
4723393

بهذه الطريقة يمكننا حساب نسبة prev_month_revenue/revenue.

إذا استخدمنا بدلًا من ذلك الدالة LEAD، فستأخذ إيراد الشهر التالي لكل صف:

SELECT id, revenue, LEAD(revenue, 1) OVER (ORDER BY MONTH) as next_month_revenue
FROM table1 ORDER BY id
idrevenuenext_month_revenue
1532492
2492393
3393723
4723 
challenge icon

التحدي

سهل

الجداول والأعمدة المتاحة:

  • air_conditioners: id، efficiency، strength، month

قارن كفاءة كل مكيّف هواء بكفاءة المكيّف السابق.

اكتب استعلامًا يعرض كفاءة كل مكيّف هواء إلى جانب كفاءة مكيّف الهواء السابق الذي تم تركيبه (استنادًا إلى id). احسب أيضًا الفرق في الكفاءة بين مكيّف الهواء الحالي والسابق. رتّب النتيجة حسب id وefficiency بترتيب تصاعدي.

أعمدة الناتج المتوقعة:

  • id
  • efficiency
  • previous_efficiency (باستخدام LAG)
  • efficiency_difference (الكفاءة الحالية - الكفاءة السابقة)

أخيرًا، غلّف الاستعلام وصفِّ الصف الأول، الذي تكون فيه قيمة previous_efficiency (وبالتالي efficiency_difference) فارغة، أي NULL:

SELECT * FROM (
    -- Your query here
)
WHERE previous_efficiency IS NOT NULL

جرّب بنفسك

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الأساسيات

تدرّب بنفسك: Playground لـ SQL