השארת שורה אחת לכל מפתח
חלק מהיחידה מעבר ליסודות במסלול ה-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 בכל מחיצה היא השורה שצריך לשמור.
אתגר
בינוניטבלאות ועמודות זמינות:
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
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה מעבר ליסודות
6מתכונים לניתוח נתונים
N המובילים בכל קבוצהאחוז מתוך הסך הכולסכום מצטברהשארת שורה אחת לכל מפתחסיכום – הלקוחות המוביליםתרגלו בעצמכם: SQL אונליין