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

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

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

מתוזמן נעוץ נעול הועבר תכנות
10 פוסטים 3 כותבים 88 צפיות
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • ח מנותק
    ח מנותק
    חוקר
    כתב ב נערך לאחרונה על ידי
    #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
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
  • התחברות

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

  • התחברו או הירשמו כדי לחפש.