HiTakeJobHiTakeJob

שאלות ראיון Data ו-SQL — מדריך 2026

זמן קריאה: 8 דקות

ראיון Data ו-SQL בודק שני דברים: שליטה טכנית ב-SQL (JOINs, אגרגציות, window functions) ויכולת לתרגם שאלה עסקית לשאילתה נכונה. נכון להיום פתוחות ב-HiTakeJob 133 משרות SQL ו-365 משרות Python — שני הכלים המרכזיים לתפקידי Data Analyst ו-Data Engineer. ריכזנו את השאלות האמיתיות שחוזרות בראיונות, עם תשובות ממוקדות.

קבוצה 1: JOINs ואגרגציות — היסודות שנבדקים תמיד

כמעט כל ראיון SQL פותח כאן. ודאו שאתם שולטים בהבדלים הדקים:

  • מה ההבדל בין INNER ל-LEFT JOIN? INNER מחזיר רק שורות תואמות בשתי הטבלאות; LEFT שומר את כל שורות הטבלה השמאלית, עם NULL היכן שאין התאמה.
  • מתי משתמשים ב-GROUP BY מול DISTINCT? DISTINCT מסיר כפילויות; GROUP BY מקבץ שורות לצורך אגרגציה (COUNT, SUM, AVG) לפי מפתח.
  • מה ההבדל בין WHERE ל-HAVING? WHERE מסנן שורות לפני האגרגציה; HAVING מסנן קבוצות אחרי ה-GROUP BY.
  • איך מוצאים כפילויות בטבלה? GROUP BY על העמודה, ואז HAVING COUNT(*) גדול מ-1 — שאלה קלאסית בראיונות.
  • מה קורה עם NULL באגרגציות? COUNT על עמודה מתעלם מ-NULL, אך COUNT(*) סופר את כל השורות. SUM ו-AVG מתעלמים מ-NULL.
  • מה ההבדל בין FULL OUTER ל-CROSS JOIN? FULL OUTER שומר שורות משתי הטבלאות עם NULL בצד שאין התאמה; CROSS JOIN מחזיר מכפלה קרטזית של כל השורות.

קבוצה 2: Window Functions — מה שמבדיל מתקדמים

Window Functions הן הנושא שמפריד בין מועמד בסיסי למתקדם. הן מבצעות חישוב על "חלון" שורות בלי לכווץ אותן ל-GROUP BY.

פונקציהמה עושהשימוש נפוץ
ROW_NUMBER()מספור רץ ייחודי לכל שורההסרת כפילויות, top-N per group
RANK() / DENSE_RANK()דירוג עם/בלי דילוגים בשוויוןדירוג מכירות, ציונים
LAG() / LEAD()גישה לשורה קודמת/הבאהשינוי חודש-על-חודש, מגמות
SUM() OVER()סכום רץ (running total)הכנסה מצטברת לאורך זמן

שאלה נפוצה: "מצא/י את המוצר השני הכי נמכר בכל קטגוריה." — הפתרון האלגנטי הוא ROW_NUMBER עם PARTITION BY category ו-ORDER BY sales יורד, ואז סינון ל-rank שווה 2. אם עניתם בתת-שאילתות מקוננות, המראיין ידחוף אתכם ל-window function.

שאלת עומק נוספת: מה ההבדל בין PARTITION BY ל-GROUP BY? — GROUP BY מכווץ שורות לשורה אחת לכל קבוצה; PARTITION BY מחלק את הנתונים לחלונות אך שומר את כל השורות המקוריות. זו הבחנה שמראיינים אוהבים לבדוק.

קבוצה 2ב: תרגיל window function מודרך

נעבור על שאלה נפוצה צעד-אחר-צעד: "החזר/י לכל לקוח את ההזמנה האחרונה שלו." הגישה הנאיבית היא תת-שאילתה שמוצאת את התאריך המקסימלי לכל לקוח ואז JOIN חזרה — אבל זה מסורבל ולעיתים איטי. הפתרון האלגנטי: ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY order_date DESC), ואז סינון ל-rank שווה 1. זהו דפוס "top-1 per group" שחוזר בעשרות וריאציות. שאלת המשך אופיינית: "ומה אם רוצים את שלוש ההזמנות האחרונות?" — פשוט משנים את הסינון ל-rank קטן או שווה 3. מי שמזהה שזהו אותו דפוס עם שינוי קטן מסמן/ת שליטה אמיתית. וריאציה נוספת: החלפת ROW_NUMBER ב-RANK כשרוצים לכלול שוויונות (שתי הזמנות באותו תאריך). ההבנה מתי לבחור בכל אחת מהפונקציות היא בדיוק מה שמבדיל מועמד מתקדם.

קבוצה 3: אופטימיזציית שאילתות

ככל שהתפקיד בכיר יותר, נבדקת יותר יכולת לכתוב שאילתות שרצות מהר על נתונים גדולים.

  • מה זה אינדקס ומתי הוא עוזר? מבנה (לרוב B-Tree) שמאיץ חיפוש וסינון על עמודה. המחיר: כתיבות איטיות יותר ואחסון נוסף.
  • איך מנתחים שאילתה איטית? EXPLAIN / EXPLAIN ANALYZE חושף את תוכנית הביצוע — חפשו full table scans במקום index scans.
  • למה SELECT * הוא הרגל רע? מושך עמודות מיותרות, מגדיל I/O ומונע index-only scans. בחרו רק את העמודות הדרושות.
  • CTE מול Subquery — מה עדיף? CTE (WITH) קריא יותר ומאפשר שימוש חוזר; ברוב מנועי ה-DB המודרניים הביצועים דומים.
  • מה זה partitioning? חלוקת טבלה גדולה לחלקים (למשל לפי תאריך) כדי שהשאילתה תסרוק רק את הרלוונטי.
  • מתי אינדקס דווקא מזיק? על עמודה עם מעט ערכים ייחודיים (למשל דגל בוליאני), או על טבלה עם הרבה כתיבות — שם עלות התחזוקה עולה על התועלת.

קבוצה 4: מודלינג נתונים ו-ETL (לתפקידי Data Engineer)

מהנדסי דאטה נשאלים גם על ארכיטקטורת נתונים ופייפליינים:

  • מה ההבדל בין OLTP ל-OLAP? OLTP מותאם לטרנזקציות מהירות (אפליקציות); OLAP מותאם לשאילתות אנליטיות כבדות (data warehouse).
  • מה זה Star Schema? מודל data warehouse עם טבלת עובדות מרכזית (facts) וטבלאות ממדים (dimensions) סביבה. פשוט ומהיר לשאילתות אנליטיות.
  • ETL מול ELT — מה ההבדל? ETL מבצע טרנספורמציה לפני הטעינה; ELT טוען גולמי ומטרנספורם בתוך ה-warehouse (נפוץ עם Snowflake/BigQuery).
  • איך מטפלים ב-idempotency בפייפליין? ודאו שהרצה חוזרת של אותה משימה לא יוצרת כפילויות — למשל דרך upsert או מפתחות ייחודיים.
  • מה זה Slowly Changing Dimension (SCD)? טכניקה לשמירת היסטוריית שינויים בטבלת ממדים — למשל שמירת כתובת ישנה וחדשה של לקוח לאורך זמן.

כלי הדאטה המבוקשים בשוק משתקפים במשרות הפתוחות: 22 משרות Airflow לתזמון פייפליינים, 7 משרות Tableau ו-21 משרות Power BI לויזואליזציה, ו-36 משרות PostgreSQL. שווה להתמקד בכלים שחוזרים במשרות שאתם מכוונים אליהן.

שאלות SQL נפוצות וכיצד ניגשים אליהן

הטבלה מרכזת שאלות תרגול קלאסיות ואת הכלי הנכון לפתרון כל אחת — שווה לתרגל את כולן עד שהן הופכות לרפלקס:

השאלההכלי / הגישה
הרשומה השנייה הכי גבוהה בכל קבוצהROW_NUMBER() עם PARTITION BY וסינון ל-rank=2
שינוי חודש-על-חודשLAG() לגישה לערך של השורה הקודמת
מציאת כפילויותGROUP BY עם HAVING COUNT(*) > 1
סכום מצטבר לאורך זמןSUM() OVER (ORDER BY date)
לקוחות בלי הזמנותLEFT JOIN עם WHERE ... IS NULL, או NOT EXISTS

דוגמה מוחשית לשאלה האחרונה: כדי למצוא לקוחות שמעולם לא הזמינו, עושים LEFT JOIN מטבלת customers ל-orders ומסננים היכן ש-orders.id הוא NULL. מראיין שרואה אתכם מגיעים ישר ל-LEFT JOIN + IS NULL (במקום תת-שאילתה מסורבלת) מבין שאתם שולטים בכלי.

קבוצה 5: תרגיל SQL חי — למה לצפות

רבים מהראיונות כוללים תרגיל מעשי: נותנים לכם סכמה ומבקשים לכתוב שאילתה בזמן אמת. טיפים:

  • הבהירו את השאלה קודם: ודאו שהבנתם מה מחזירים ואיזה מקרי קצה קיימים (NULL, כפילויות).
  • חשבו בקול רם: הסבירו את הגישה לפני שכותבים — בדיוק כמו בראיון System Design.
  • בנו הדרגתית: התחילו מ-SELECT בסיסי, הוסיפו JOINs, ואז אגרגציה וסינון.
  • שימו לב לקריאות: alias ברורים ו-CTEs עדיפים על שאילתה ענקית ומקוננת.

מושגי SQL מתקדמים שכדאי להכיר

לתפקידים בכירים יותר, כדאי להכיר גם מושגים שחורגים מהבסיס. הכינו הסבר קצר לכל אחד:

  • Transactions ו-ACID: מה מבטיחות תכונות Atomicity, Consistency, Isolation ו-Durability, ומתי הן קריטיות (למשל בתשלומים).
  • Isolation Levels: ההבדל בין Read Committed ל-Serializable, ותופעות כמו dirty read ו-phantom read.
  • Materialized View: תוצאת שאילתה שנשמרת פיזית ומתרעננת מדי פעם — מאיצה דוחות כבדים במחיר טריות נתונים.
  • Recursive CTE: שאילתה שקוראת לעצמה — שימושית למבנים היררכיים כמו עץ ארגוני או קטגוריות מקוננות.
  • EXISTS מול IN: מתי כל אחד יעיל יותר, במיוחד עם תת-שאילתות גדולות או עם NULL-ים.

מי שמכיר/ה את המושגים האלה ויודע/ת מתי להשתמש בהם מסמן/ת עומק שמתאים לתפקידי Data Engineer בכירים.

קבוצה 6: שאלות התנהגותיות ועסקיות לתפקידי דאטה

לצד הטכני, מראיינים בודקים גם חשיבה עסקית ותקשורת:

  • "איך היית מודד/ת הצלחה של פיצ'ר חדש?" — בודק יכולת להגדיר מדדים (metrics) רלוונטיים ולחשוב על baseline והשוואה.
  • "מספר במערכת ירד ב-20% — איך תחקור/י?" — בודק גישה מובנית: פילוח לפי ממדים, בדיקת שינויים בנתונים, שלילת בעיות איסוף.
  • "איך היית מסביר/ה מודל סטטיסטי למנהל לא-טכני?" — בודק תקשורת ויכולת לתרגם מורכבות לשפה עסקית.

טעויות נפוצות בראיון Data ו-SQL

  • קפיצה ישר לכתיבה: בלי להבהיר את השאלה ואת מקרי הקצה (NULL, כפילויות) — בדיוק כמו קפיצה לפתרון בראיון System Design.
  • הימנעות מ-window functions: פתרון בעיות "top-N per group" בתת-שאילתות מקוננות במקום ב-ROW_NUMBER מסמן פער בידע.
  • שכחת NULL: התעלמות מהתנהגות NULL באגרגציות וב-JOINs היא מקור נפוץ לתשובות שגויות.
  • SELECT * מתוך הרגל: מגייסים שמים לב מי מושך רק את העמודות הדרושות ומי גורר הכל.
  • התעלמות מהצד העסקי: שאילתה נכונה טכנית שלא עונה על השאלה העסקית האמיתית מפספסת את המטרה.
  • עבודה בשקט: מי שלא מסביר/ה את הגישה בקול רם לא נותן/ת למראיין להעריך את החשיבה.

איך להתכונן נכון לראיון Data ו-SQL

  • תרגלו על פלטפורמות אמיתיות: פתרו בעיות SQL מדורגות עד שהן הופכות לאוטומטיות.
  • שלטו ב-window functions: זה הנושא שהכי מבדיל, וקל להתכונן אליו.
  • הכירו את ההבדל בין התפקידים: אנליסט מתמקד בשאילתות ותובנות; מהנדס דאטה בפייפליינים וארכיטקטורה. הרחבנו במאמר מיומנויות Data Science ו-Machine Learning.
  • למדו Python לצד SQL: עם 365 משרות Python פתוחות, שילוב השניים מרחיב משמעותית את ההזדמנויות.

מוכנים? עיינו בכל המשרות הפתוחות וסננו לפי Data או SQL. ולפני משא ומתן על שכר, קראו את שכר מפתחים בישראל 2026 לפי תפקיד (הנתונים הם הערכות שוק).

שאלות נפוצות

מה הנושא הכי חשוב לראיון SQL?

שני עמודי תווך: שליטה ב-JOINs ובאגרגציות (GROUP BY, HAVING, טיפול ב-NULL), ו-window functions (ROW_NUMBER, RANK, LAG/LEAD). Window functions הן מה שהכי מבדיל מועמד מתקדם, ולכן שווה להשקיע בהן זמן הכנה ממוקד.

מה ההבדל בין ראיון Data Analyst ל-Data Engineer?

ראיון Data Analyst מתמקד בשאילתות SQL, הפקת תובנות וויזואליזציה (Tableau, Power BI). ראיון Data Engineer מוסיף מודלינג נתונים, ETL/ELT, ארכיטקטורת warehouse וכלי תזמון כמו Airflow. שניהם דורשים SQL חזק כבסיס.

כמה משרות SQL ו-Data פתוחות בישראל?

נכון להיום פתוחות ב-HiTakeJob 133 משרות SQL ו-365 משרות Python, לצד עשרות משרות בכלי דאטה כמו Airflow (7), Tableau (7) ו-Power BI (21). שילוב של SQL ו-Python מרחיב משמעותית את מספר המשרות הרלוונטיות עבורכם.

מה ההבדל בין PARTITION BY ל-GROUP BY?

GROUP BY מכווץ מספר שורות לשורה אחת לכל קבוצה, ולכן מאבד את השורות המקוריות. PARTITION BY (בתוך window function) מחלק את הנתונים לחלונות לצורך חישוב, אך שומר את כל השורות. זו הבחנה נפוצה בראיונות מתקדמים.

איך עונים על תרגיל SQL חי בראיון?

הבהירו קודם את השאלה ואת מקרי הקצה (NULL, כפילויות), חשבו בקול רם, ובנו את השאילתה הדרגתית — מ-SELECT בסיסי, דרך JOINs ועד אגרגציה וסינון. השתמשו ב-alias ברורים וב-CTEs לקריאות, במקום שאילתה אחת ענקית ומקוננת.

אילו נושאי SQL הכי חשוב לתרגל לפני ראיון?

התמקדו בחמישה: JOINs (במיוחד LEFT JOIN עם IS NULL), אגרגציות עם GROUP BY ו-HAVING, טיפול נכון ב-NULL, window functions (ROW_NUMBER, RANK, LAG/LEAD), ואופטימיזציה בסיסית (אינדקסים, EXPLAIN, הימנעות מ-SELECT *). window functions הן ההשקעה המשתלמת ביותר, כי הן מבדילות מועמד מתקדם ומופיעות כמעט בכל ראיון בכיר.

מאמרים נוספים

המשרות באתר