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

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

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

פילוח נתונים ב mySQL

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

    יש לי רשימה נניח מאה אנשים עם הפרטים שלהם, אחד הפרטים הוא עיר.
    אני רוצה פילוח כמה יש בכל עיר, אבל רק של ערים בהם יש יותר מ15 אנשים נניח.
    כל השאר ירוכזו בקטגוריה "כל הערים"
    בא נגיד בסופו של דבר אני צריך רשימה כזו:
    c03d10c5-be78-4b36-817f-ebadfc8e90ab-image.png
    כאשר גבעת זאב/קרית יערים/ ועוד שיש בהם פחות מ15 בכל אחד ירוכזו תחת כל הערים.
    אשמח לקבל כיון עבודה.
    תודה

    תגובה 1 תגובה אחרונה
    0
    • dovidD מנותק
      dovidD מנותק
      dovid ניהול
      כתב ב נערך לאחרונה על ידי dovid
      #2
      SELECT IF(CountCIty > 15, City, "כל הערים"), SUM(CountCIty)  FROM 
      (
         SELECT City,  Count(ID) AS CountCIty
         FROM Table
         GROUP BY City
      )
      GROUP BY IF(CountCIty > 15, City, "כל הערים")
      

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

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

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

      yossizY ח 3 תגובות תגובה אחרונה
      6
      • yossizY מנותק
        yossizY מנותק
        yossiz
        השיב לdovid ב נערך לאחרונה על ידי
        #3

        @dovid אפשר להטריח אותך לציין איזה חלק מהתחביר מסויים ל-mysql?

        📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

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

          @dovid אמר בפילוח נתונים ב mySQL:

          SELECT IF(CountCIty > 15, City, "כל הערים"), SUM(CountCIty)  FROM 
          (
             SELECT
             City,
             Count(ID) AS CountCIty
             FROM Table
             GROUP BY City
          )
          GROUP BY IF(CountCIty > 15, City, "כל הערים")
          

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

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

          SELECT IF(CountCIty > 35, City, "כל הערים"), SUM(CountCIty)  FROM 
          (
             SELECT City,  Count(`id`) AS CountCIty
             FROM Contacts
             GROUP BY City
          ) as CountTable
          GROUP BY IF(CountCIty > 35, City, "כל הערים")
          
          תגובה 1 תגובה אחרונה
          2
          • dovidD מנותק
            dovidD מנותק
            dovid ניהול
            השיב לyossiz ב נערך לאחרונה על ידי dovid
            #5

            @yossiz אפשר אבל זה פעם אחרונה 🙂
            בsql server א"א לעשות SELECT על שדות ללא פונקציית צבירה למעט אלו שצוינו מפורש בפיסוקית GROUP BY.
            (זה אכן הגיוני אבל מרגיז)
            כלומר יצטרכו לעשות ככה:

            SELECT MAX(IF(CountCIty > 15, City, "כל הערים")), SUM(CountCIty)  FROM 
            

            הMAX פה לא באמת יעשה משהו שהרי אחרי הקיבוץ הכפול לא ייתכנו ערכים שונים באותה קבוצה והוא יחזיר את האחרון סתם.
            אפשר גם להשתמש בOVER, אבל אני לא מכיר את זה עדיין (נו נו נו!).

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

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

            yossizY תגובה 1 תגובה אחרונה
            5
            • yossizY מנותק
              yossizY מנותק
              yossiz
              השיב לdovid ב נערך לאחרונה על ידי
              #6

              @dovid אמר בפילוח נתונים ב mySQL:

              @yossiz אפשר אבל זה פעם אחרונה

              באמת לא היית צריך לענות כי אני כל כך לא מכיר את SQL שלא הצלחתי להבין את התשובה...
              טוב, יום אחד כשאלמד SQL אחזור לזה ואבין.

              📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

              תגובה 1 תגובה אחרונה
              4
              • ח מנותק
                ח מנותק
                חוקר
                השיב לdovid ב נערך לאחרונה על ידי
                #7

                @dovid אמר בפילוח נתונים ב mySQL:

                SELECT IF(CountCIty > 15, City, "כל הערים"), SUM(CountCIty)  FROM 
                (
                   SELECT City,  Count(ID) AS CountCIty
                   FROM Table
                   GROUP BY City
                )
                GROUP BY IF(CountCIty > 15, City, "כל הערים")
                

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

                אשמח לכיון על זה הדרך, אם יש לי רשימת ערים מוגדר מראש שאותם אני רוצה כשורה נפרדת וכל השאר מאוחדים.
                איך עושים זאת?
                תודה

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

                  @חוקר הכיוון נשאר זהה. אם זו רשימה קצרה תוסיף בIF תנאי של IN. ואם זה ארוך אני מבין שזה בטבלה אז צריך לעשות LEFT JOIN לטבלה הזו.

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

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

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

                    @dovid אמר בפילוח נתונים ב mySQL:

                    @חוקר הכיוון נשאר זהה. אם זו רשימה קצרה תוסיף בIF תנאי של IN. ואם זה ארוך אני מבין שזה בטבלה אז צריך לעשות LEFT JOIN לטבלה הזו.

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

                    dovidD תגובה 1 תגובה אחרונה
                    0
                    • dovidD מנותק
                      dovidD מנותק
                      dovid ניהול
                      השיב לחוקר ב נערך לאחרונה על ידי dovid
                      #10

                      @חוקר לא, אין מצב להסבר כי אין לי מספיק מידע. כתבתי מה שיכולתי להסביר במסגרת הנתונים שסיפקת.
                      תפרט יותר, כתוב קוד של מה שאתה כן יודע, ואשמח להשלים לך.

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

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

                      תגובה 1 תגובה אחרונה
                      0

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

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

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