Menu
CoddyTech

الاحتفاظ بصف واحد لكل مفتاح

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

غالبًا ما يكون لديك جدول يظهر فيه مفتاح (عميل أو مستشعر أو منتج) عدة مرات، وتريد الاحتفاظ بأحدث سجل فقط، أو بالسجل ذي أعلى نتيجة.

استخدم ROW_NUMBER() بالطريقة نفسها التي استخدمتها مع أعلى N، ثم احتفظ بـ rn = 1.

WITH ranked AS (
    SELECT *,
           ROW_NUMBER() OVER (
               PARTITION BY customer_id ORDER BY purchased_at DESC
           ) AS rn
    FROM purchases
)
SELECT * FROM ranked WHERE rn = 1

تقول PARTITION BY «ترتيب واحد لكل مفتاح هذا»؛ وتقول ORDER BY «الأحدث أولًا». الصف 1 في كل قسم هو الصف الذي تريد الاحتفاظ به.

challenge icon

التحدي

متوسط

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

  • readings: sensor_id, recorded_at, value

لكل مستشعر لديه 3 قراءات على الأقل، أَعِد القراءة الوحيدة ذات القيمة الأعلى. إذا تعادلت قراءتان في value، فاحتفظ بالأحدث.

أخرج sensor_id وrecorded_at وvalue، مرتبةً حسب sensor_id.

جرّب بنفسك

WITH ranked AS (
    -- TODO: اختر كل قراءة مع ترتيبها ضمن المستشعر الخاص بها (rn)
    -- وعدد القراءات التي يمتلكها ذلك المستشعر (total_readings)
)
SELECT sensor_id, recorded_at, value
FROM ranked
WHERE rn = 1 AND total_readings >= 3
ORDER BY sensor_id
quiz iconاختبر نفسك

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

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

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