דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. Sum על חלק מהתוצאות - SQL

Sum על חלק מהתוצאות - SQL

מתוזמן נעוץ נעול הועבר תכנות
14 פוסטים 5 כותבים 408 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • מנצפךמ מנותק
    מנצפךמ מנותק
    מנצפך
    כתב ב נערך לאחרונה על ידי
    #1

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

    נניח יש לי טבלה של אימוני ספורט. יש שדה של זמן האימון ושדה של עלות האימון.
    איך אפשר בשאילתה אחת לעשות SUM על כל הזמן, ו SUM רק העלות של ימי ראשון?

    העניין הוא לחסוך בזמן השאילתה, כי במקום שיחפש פעמיים את הנתונים, הוא יחפש רק פעם אחת.

    clickoneC תגובה 1 תגובה אחרונה
    0
    • clickoneC מנותק
      clickoneC מנותק
      clickone
      השיב למנצפך ב נערך לאחרונה על ידי
      #2

      @מנצפך לעשות IF על העמודה השנייה
      לדוגמא,

      IF(day=1,price,0)
      

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

      שים לב, לגבי הIF, זה תלוי מה המסד שלך.
      באקסס זה IIF, בSQL ובMYSQL זה IF
      https://www.w3schools.com/sql/func_mysql_if.asp

      אין טסט כמו פרודקשן.

      המייל שלי urivpn@gmail.com

      מנצפךמ תגובה 1 תגובה אחרונה
      2
      • מנצפךמ מנותק
        מנצפךמ מנותק
        מנצפך
        השיב לclickone ב נערך לאחרונה על ידי
        #3

        @clickone מה היעילות של IF?
        אני מדבר על טבלאות גדולות עם מאות שאילתות בדקה.

        clickoneC תגובה 1 תגובה אחרונה
        0
        • clickoneC מנותק
          clickoneC מנותק
          clickone
          השיב למנצפך ב נערך לאחרונה על ידי
          #4

          @מנצפך אז ברור שלכאורה הוא לא הכי יעיל בכמויות
          אולי תעשה עוד שאילתה (תצוגה) שמורה, ותחבר בינהם בJOIN

          אין טסט כמו פרודקשן.

          המייל שלי urivpn@gmail.com

          upsilon01U תגובה 1 תגובה אחרונה
          1
          • upsilon01U מנותק
            upsilon01U מנותק
            upsilon01
            השיב לclickone ב נערך לאחרונה על ידי upsilon01
            #5

            @clickone למה זה ברור שזה לא יעיל בכמויות?

            הרי זה רק תנאי נוסף באותו לולאה
            זה לא לולאה חדש

            clickoneC תגובה 1 תגובה אחרונה
            2
            • dovidD מחובר
              dovidD מחובר
              dovid ניהול
              כתב ב נערך לאחרונה על ידי
              #6

              אני גם חושב שזה יעיל.

              מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

              בכל נושא אפשר ליצור קשר dovid@tchumim.com

              תגובה 1 תגובה אחרונה
              2
              • clickoneC מנותק
                clickoneC מנותק
                clickone
                השיב לupsilon01 ב נערך לאחרונה על ידי
                #7

                @upsilon01 כי אתה עושה עליו SUM.
                ז"א, קודם אתה אוסף את הנתונים, לפני הSUM.
                עושה את הIF על כל הנתונים, גם על מה שלא נכלל בתנאי (ימים שהם לא יום ראשון בדוגמא שהוא הביא)
                ובסוף אתה עושה את הSUM על הערכים שחזרו.
                בקצת רשומות ובקשות זה בכלל לא משמעותי. אבל אם יש הרבה בקשות והרבה רשומות אני חשוב שזה טיפה יקר מבחינת ביצועים (לא בדקתי)
                השיטה השנייה שהצעתי, לעשות תצוגה שמורה, יותר יעילה עקרונית, כי קודם נעשה WHERE על הרשומות, ומגיעים רק הרשומות הרלוונטיות, ועליהם נעשה הSUM, ורק אח"כ מחברים אותה לתצוגה הראשית עם JOIN (אפשר כמובן גם עם שאילתת משנה.)

                לא בדקתי את מה שאני כותב לעומק.
                רק תחושת בטן וטיפה מנסיון שזה "נראה" רץ יותר יעיל וזריז.

                אין טסט כמו פרודקשן.

                המייל שלי urivpn@gmail.com

                S מנצפךמ 2 תגובות תגובה אחרונה
                2
                • S מנותק
                  S מנותק
                  Shmuel754
                  השיב לclickone ב נערך לאחרונה על ידי Shmuel754
                  #8

                  @clickone לא נכון.
                  הIF אמור להיות מבוצע בשאילתת הSQL.
                  אם מתאים התנאי הערך הוא הסכום, ואם לא, 0. והחישוב הוא רק על השדה המחושב שמכיל את הנתונים המחושבים.

                  מה שכן שבWHERE שיכניס רק מה שהוא רוצה, ובכך ימנע משליפה מיותרת.

                  clickoneC תגובה 1 תגובה אחרונה
                  2
                  • מנצפךמ מנותק
                    מנצפךמ מנותק
                    מנצפך
                    השיב לclickone ב נערך לאחרונה על ידי
                    #9

                    @clickone בהצעה שלך יש שאילתה כפולה ומיותרת.
                    עדיף לעשות שאילתה אחת ואח"כ לסנן את מה שלא צריך. (ע"י ה IF).
                    תחשוב שאתה מקבל את כל הרשימות ואח"כ מסנן אותם בתוכנה, ומחשב SUM.
                    זה עדיף מאשר לעשות 2 שאילתות נפרדות.

                    תגובה 1 תגובה אחרונה
                    1
                    • clickoneC מנותק
                      clickoneC מנותק
                      clickone
                      כתב ב נערך לאחרונה על ידי
                      #10

                      מישהו בדק את זה?
                      או שזה השערה?
                      אני כתבתי את התשובה שלי בהשערה. ויכול להיות מאד שאני טועה. (ויכול להיות שגם לא)
                      אם מישהו יכול לעשות בדיקה על מאות אלפי רשומות + בדיקת עומס ולומר מה יותר יעיל ומהיר אשמח.

                      אין טסט כמו פרודקשן.

                      המייל שלי urivpn@gmail.com

                      תגובה 1 תגובה אחרונה
                      1
                      • מנצפךמ מנותק
                        מנצפךמ מנותק
                        מנצפך
                        כתב ב נערך לאחרונה על ידי
                        #11

                        בהמשך אבדוק בעז"ה ואעדכן.

                        תגובה 1 תגובה אחרונה
                        1
                        • clickoneC מנותק
                          clickoneC מנותק
                          clickone
                          השיב לShmuel754 ב נערך לאחרונה על ידי
                          #12

                          @Shmuel754 אתה צודק. אבל הוא רוצה לעשות SUM על הכל, ובנוסף עוד SUM עם תנאי.
                          אז אין לו כאן WHERE.
                          בעצם הSQL אמור קודם לחשב את הכל, ואח"כ לרוץ לעשות SUM.
                          ולכן כתבתי מה שכתבתי.
                          ושוב, לדעתי כדאי שמישהו יעשה בדיקה ויודיענו דבר :smile:

                          אין טסט כמו פרודקשן.

                          המייל שלי urivpn@gmail.com

                          תגובה 1 תגובה אחרונה
                          0
                          • מנצפךמ מנותק
                            מנצפךמ מנותק
                            מנצפך
                            כתב ב נערך לאחרונה על ידי
                            #13

                            @clickone אני רוצה את שני ה SUM עם Where!

                            תגובה 1 תגובה אחרונה
                            0
                            • S מנותק
                              S מנותק
                              Shmuel754
                              כתב ב נערך לאחרונה על ידי
                              #14
                              פוסט זה נמחק!
                              תגובה 1 תגובה אחרונה
                              0

                              בא תתחבר לדף היומי!
                              • התחברות

                              • אין לך חשבון עדיין? הרשמה

                              • התחברו או הירשמו כדי לחפש.
                              • פוסט ראשון
                                פוסט אחרון
                              0
                              • דף הבית
                              • קטגוריות
                              • פוסטים אחרונים
                              • משתמשים
                              • חיפוש
                              • חוקי הפורום