Menu
CoddyTech

השארת שורה אחת לכל מפתח

חלק מהיחידה מעבר ליסודות במסלול ה-SQL של Coddy. שיעור 26 מתוך 27.

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

השתמשו ב־ROW_NUMBER() באותו אופן שבו השתמשתם עבור top-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בחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה מעבר ליסודות

תרגלו בעצמכם: SQL אונליין