Sum על חלק מהתוצאות - SQL
-
אני רוצה לעשות בשאילתה אחת sum על כמה שדות. אבל שבאחת השדות הוא יסנן אחרת מאשר השדה השניה.
נניח יש לי טבלה של אימוני ספורט. יש שדה של זמן האימון ושדה של עלות האימון.
איך אפשר בשאילתה אחת לעשות SUM על כל הזמן, ו SUM רק העלות של ימי ראשון?העניין הוא לחסוך בזמן השאילתה, כי במקום שיחפש פעמיים את הנתונים, הוא יחפש רק פעם אחת.
-
@מנצפך לעשות IF על העמודה השנייה
לדוגמא,IF(day=1,price,0)
כאשר אתה בודק אם התנאי מתאים למה שאתה רוצה, ואם כן אתה מעביר את הסכום, אחרת, אתה מחזיר אפס.
על השדה הזה אתה עושה SUM.שים לב, לגבי הIF, זה תלוי מה המסד שלך.
באקסס זה IIF, בSQL ובMYSQL זה IF
https://www.w3schools.com/sql/func_mysql_if.asp -
@upsilon01 כי אתה עושה עליו SUM.
ז"א, קודם אתה אוסף את הנתונים, לפני הSUM.
עושה את הIF על כל הנתונים, גם על מה שלא נכלל בתנאי (ימים שהם לא יום ראשון בדוגמא שהוא הביא)
ובסוף אתה עושה את הSUM על הערכים שחזרו.
בקצת רשומות ובקשות זה בכלל לא משמעותי. אבל אם יש הרבה בקשות והרבה רשומות אני חשוב שזה טיפה יקר מבחינת ביצועים (לא בדקתי)
השיטה השנייה שהצעתי, לעשות תצוגה שמורה, יותר יעילה עקרונית, כי קודם נעשה WHERE על הרשומות, ומגיעים רק הרשומות הרלוונטיות, ועליהם נעשה הSUM, ורק אח"כ מחברים אותה לתצוגה הראשית עם JOIN (אפשר כמובן גם עם שאילתת משנה.)לא בדקתי את מה שאני כותב לעומק.
רק תחושת בטן וטיפה מנסיון שזה "נראה" רץ יותר יעיל וזריז.