Menu
Coddy logo textTech

קיבוץ חלק 2

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

מילת המפתח WHERE מפעילה תנאי על כל רשומה בנפרד. לדוגמה:

SELECT * FROM table1
WHERE col1 > col2

הביטוי col1 > col2 יופעל על כל רשומה ויבדוק אם התנאי מתקיים.

אבל מה אם נרצה לסנן תוצאות מצטברות? לדוגמה:

SELECT category, AVG(price) FROM table1
WHERE AVG(price) > 40
GROUP BY category

הפעולה הזו לא תעבוד כי WHERE לא יכול לבדוק צבירות. לשם כך יש לנו את מילת המפתח HAVING. היא מסננת נתונים לפי תנאי הצבירה.

SELECT category, AVG(price) FROM table1
GROUP BY category
HAVING AVG(price) > 40

פעולה זו תסנן את כל הקטגוריות שבהן המחיר הממוצע גדול מ-40.

אם נרצה לשלב את פסוקיות HAVING ו־WHERE, נכתוב:

SELECT category, AVG(price) FROM table1
WHERE price > 25
GROUP BY category
HAVING AVG(price) > 40

תחילה תעבור רשומה אחר רשומה ותסנן את כל הרשומות שבהן המחיר גדול מ־25, ורק לאחר מכן תריץ את סעיף GROUP BY ותסנן כל קטגוריה שבה המחיר הממוצע גדול מ־40.

challenge icon

אתגר

בינוני

טבלאות ועמודות זמינות:

  • earthquakes: location, amplitude, period

סולם ריכטר הוא סולם לוגריתמי המשמש למדידת עוצמתן של רעידות אדמה.

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

רעידת אדמה גדולה מוגדרת כך:

  • המשרעת גדולה מ-1 או שווה לו
  • המחזור של הגלים הוא דקה אחת או יותר

באתגר הזה נשתמש בנוסחה אחרת: M = (A/T)^2 / T, שהיא שקולה ל-M = ((A/T)*(A/T)) / T. כאן M היא העוצמה, A היא עמודת amplitude ו-T היא עמודת period.

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

עגלו את התוצאות ל-2 ספרות אחרי הנקודה העשרונית.

נסו בעצמכם

quiz iconבחנו את עצמכם

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

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

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