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

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

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

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

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

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

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

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

    clickoneC תגובה 1 תגובה אחרונה
    0
    • מנצפךמ מנצפך

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

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

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

      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
      • clickoneC clickone

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

        IF(day=1,price,0)
        

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

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

        מנצפךמ מנותק
        מנצפךמ מנותק
        מנצפך
        כתב ב נערך לאחרונה על ידי
        #3

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

        clickoneC תגובה 1 תגובה אחרונה
        0
        • מנצפךמ מנצפך

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

          clickoneC מנותק
          clickoneC מנותק
          clickone
          כתב ב נערך לאחרונה על ידי
          #4

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

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

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

          upsilon01U תגובה 1 תגובה אחרונה
          1
          • clickoneC clickone

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

            upsilon01U מנותק
            upsilon01U מנותק
            upsilon01
            כתב ב נערך לאחרונה על ידי upsilon01
            #5

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

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

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

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

              • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
              • בכל נושא אפשר ליצור קשר dovid@tchumim.com
              תגובה 1 תגובה אחרונה
              2
              • upsilon01U upsilon01

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

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

                clickoneC מנותק
                clickoneC מנותק
                clickone
                כתב ב נערך לאחרונה על ידי
                #7

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

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

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

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

                S מנצפךמ 2 תגובות תגובה אחרונה
                2
                • clickoneC clickone

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

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

                  S מנותק
                  S מנותק
                  Shmuel754
                  כתב ב נערך לאחרונה על ידי Shmuel754
                  #8

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

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

                  clickoneC תגובה 1 תגובה אחרונה
                  2
                  • clickoneC clickone

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

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

                    מנצפךמ מנותק
                    מנצפךמ מנותק
                    מנצפך
                    כתב ב נערך לאחרונה על ידי
                    #9

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

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

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

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

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

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

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

                        תגובה 1 תגובה אחרונה
                        1
                        • S Shmuel754

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

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

                          clickoneC מנותק
                          clickoneC מנותק
                          clickone
                          כתב ב נערך לאחרונה על ידי
                          #12

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

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

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

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

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

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


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

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

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