Menu
CoddyTech

קיבוץ חלק 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 אונליין