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

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

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

שאילתת SQL חצויה

מתוזמן נעוץ נעול הועבר תכנות
17 פוסטים 5 כותבים 269 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • chagoldC מנותק
    chagoldC מנותק
    chagold
    כתב ב נערך לאחרונה על ידי chagold
    #2

    אני לא מחכמי sql, אבל אף פעם לא שמעתי שאפשר לעשות WHERE על חלק מהשאילתא. לכאו' תצטרך לעשות שאילתה נפרדת עבור השדה הזה.

    תגובה 1 תגובה אחרונה
    1
    • dovidD מנותק
      dovidD מנותק
      dovid ניהול
      כתב ב נערך לאחרונה על ידי
      #3
      SELECT 
      	CONCAT('="', T1.src, '"') AS phone, 
      	TRUECALLER.name AS name, 
      	(SELECT MIN(calldate) FROM ICALL.CDR_GLOBAL WHERE src = T1.src)  AS firstCall, 
      	MAX(T1.calldate) AS lastCall, 
      	ROUND(SUM(T1.billsec)/60) AS minuts, 
      	COUNT(T1.id) AS calls 
      FROM 
      	ICALL.CDR_GLOBAL AS T1
      LEFT JOIN 
      	ICALL.TRUECALLER 
      ON 
      	TRUECALLER.phone=T1.src 
      WHERE did IN(07212345678,07212345679)
      GROUP BY T1.src
      ORDER BY calls DESC
      
      

      או

      SELECT 
      	CONCAT('="', T1.src, '"') AS phone, 
      	TRUECALLER.name AS name, 
      	FirstT.First , 
      	MAX(T1.calldate) AS lastCall, 
      	ROUND(SUM(T1.billsec)/60) AS minuts, 
      	COUNT(T1.id) AS calls 
      FROM 
      	ICALL.CDR_GLOBAL AS T1
      LEFT JOIN 
      	ICALL.TRUECALLER 
      ON 
      	TRUECALLER.phone=T1.src 
      LEFT JOIN
              (SELECT src, MIN(calldate) as First FROM ICALL.CDR_GLOBAL GROUP BY src) as FirstT
      ON T1.src = FirstT.src
      WHERE did IN(07212345678,07212345679)
      GROUP BY T1.src
      ORDER BY calls DESC
      
      

      תעדכן מה יותר מהר...

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

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

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

        @dovid אמר בשאילתת SQL חצויה:

        תעדכן מה יותר מהר...

        הראשונה 29 שניות והשניה 11... השאילתא המקורית לקחה 0.8 שניה..
        תודה רבה רבה

        ליצירת קשר: admin@i-call.me

        הידד! גישה למייל גם בלי מחשב ואינטרנט!

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

          @שואף יש לזה פתרונות יעילים ואלגנטיים יותר אבל הם לא רלוונטיים לגירסת הmySql שלך (אלא"כ עדכנת? אין מצב).

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

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

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

            @dovid אמר בשאילתת SQL חצויה:

            אלא"כ עדכנת?

            דווקא אחרי הנפילה של שבוע שעבר הקמתי את השרת מחדש, אבל אני רואה שהברירת מחדל היא 5.7, כך שכנראה זה הגרסא היציבה

            ליצירת קשר: admin@i-call.me

            הידד! גישה למייל גם בלי מחשב ואינטרנט!

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

              @dovid
              אולי ניתן לעשות עם UNION.
              או אולי לא ירדתי לסוף דעתו

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

                @שואף אמר בשאילתת SQL חצויה:

                @dovid אמר בשאילתת SQL חצויה:

                אלא"כ עדכנת?

                אבל אני רואה שהברירת מחדל היא 5.7, כך שכנראה זה הגרסא היציבה

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

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

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

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

                  נסיון לפתור בצורה אחרת:

                  SELECT 
                  	CONCAT('="', CDR_GLOBAL.src, '"') AS phone, 
                  	TRUECALLER.name AS name, 
                  	MIN(CDR_GLOBAL.calldate) AS firstCall, 
                  	MAX(CDR_GLOBAL.calldate) AS lastCall, 
                  	ROUND(SUM(CASE WHEN CDR_GLOBAL.calldate >= '2020-05-01 00:00:00' THEN CDR_GLOBAL.billsec ELSE 0 END)/60) AS minuts, 
                  	COUNT(CASE WHEN CDR_GLOBAL.calldate >= '2020-05-01 00:00:00' THEN CDR_GLOBAL.id ELSE null END) AS calls 
                  FROM 
                  	ICALL.CDR_GLOBAL
                  LEFT JOIN 
                  	ICALL.TRUECALLER 
                  ON 
                  	TRUECALLER.phone=CDR_GLOBAL.src 
                  WHERE did IN(07212345678,07212345679)
                  GROUP BY CDR_GLOBAL.src
                  HAVING lastCall >= '2020-05-01 00:00:00'
                  ORDER BY calls DESC
                  

                  האם זה תקין בכלל, (אם לא אשמח ללמוד למה לא) ובמידה וכן האם יש לזה ביצועים יותר טובים?

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

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

                    0c6974fd-9819-4b25-9521-87e3dc96c1a7-image.png
                    @שואף מה פירוש ההצבעה?
                    נראה לי לפרש כך: "יפה שנזכרת בי עכשיו... כבר עברתי לנושאים אחרים ואין לי כח לחזור לזה שוב..."
                    טוב, אני מבין.
                    האמת שלא ניסיתי לעזור לך אלא לעצמי כי אני מתחיל גמור ב-SQL ואני מנסה להשתפשף.
                    אשמח אם יש לך כח להעיר על הקוד בין לטוב בין למוטב.

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

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

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

                      ליצירת קשר: admin@i-call.me

                      הידד! גישה למייל גם בלי מחשב ואינטרנט!

                      yossizY תגובה 1 תגובה אחרונה
                      2
                      • yossizY מנותק
                        yossizY מנותק
                        yossiz
                        השיב לשואף ב נערך לאחרונה על ידי yossiz
                        #12

                        @שואף תודה, בלי לחץ.

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

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

                          @dovid אמר בשאילתת SQL חצויה:

                          טוב, אז אתה יכול לשכוח מהפתרון של window functions.

                          סוף סוף למדתי פחות או יותר מה זה window function.
                          לשם לימוד, האם המימוש על ידי window function ייראה כך?

                          SELECT 
                          	CONCAT('="', CDR_GLOBAL.src, '"') AS phone, 
                          	TRUECALLER.name AS name, 
                          	MIN(CDR_GLOBAL.calldate) AS firstCall, 
                          	MAX(CDR_GLOBAL.calldate) AS lastCall, 
                          	ROUND(SUM(CDR_GLOBAL.billsec/60) FILTER (WHERE lastCall >= '2020-05-01 00:00:00') OVER () AS minuts, 
                          	COUNT(CDR_GLOBAL.id) FILTER (WHERE lastCall >= '2020-05-01 00:00:00') OVER () AS calls 
                          FROM 
                          	ICALL.CDR_GLOBAL
                          LEFT JOIN 
                          	ICALL.TRUECALLER 
                          ON 
                          	TRUECALLER.phone=CDR_GLOBAL.src 
                          WHERE did IN(07212345678,07212345679)
                          GROUP BY CDR_GLOBAL.src
                          HAVING lastCall >= '2020-05-01 00:00:00'
                          ORDER BY calls DESC
                          
                          

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

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

                            @yossiz ככה להביך אותי מול כולם...

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

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

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

                              @dovid למה הבכתי אותך? גם אתה רמזת שיש פתרון על ידי window functions רק שזה לא יעזור ל-@שואף כי גירסת ה-mysql שלו לא תומכת בזה.

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

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

                                @yossiz יש הבדל בין רק לדעת שזה יעזור, לבין לדעת איך לכתוב עם זה...

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

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

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

                                  @dovid אם כן זה בסדר... תשקיע רבע מהזמן שאני השקעתי/בזבזתי ותגיע לשם...

                                  אגב, פרעתי לך היום חוב ישן:
                                  @yossiz אמר בפילוח נתונים ב mySQL:

                                  טוב, יום אחד כשאלמד SQL אחזור לזה ואבין.

                                  חזרתי לשם והבנתי, אז תודה!

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

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

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

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

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