ממוצע באכסס

tirza

New member
ממוצע באכסס ../images/Emo19.gif

בקר טוב אולי מישהו מכיר פונקציה שמסכמת במאוזן ולא במאונך? הסבר יש לי טבלה: שם דג אורך דג 1 אורך דג 2 אורך דג 3 ממוצע אורך סטית תקן סיכן 15 12 אמנון 3 5 10 שפמנון 50 ואני צריכה למלא את הערכים של ממוצע וסטית תקן, כאשר לא תמיד יש ערכים בכל העמודות. תודה מראש
 

דממה

New member
../images/Emo26.gif

אם מדובר במספר קבוע של עמודות אפשר לעשות ממוצע בעצמך, לדוגמא:
SELECT Fish1, Fish2, Fish3, (Fish1 + Fish2 + Fish3)/3 AS Average FROM Fish​
בעניין עמודות ללא ערכים תלוי בחישוב שלך, האם את מעוניינת להתחשב בהם או לא, האם להפוך אותם ל-0? אפשר להיעזר בפונקציה מתאימה בהתאם לדרישה שלך, לדוגמא - התייחסות לערכים חסרים כ-0:
SELECT Fish1, Fish2, Fish3, (ISNULL(Fish1,0) + ISNULL(Fish2,0) + ISNULL(Fish3,0))/3 AS Average FROM Fish​
* הפונקציה isnull מחליפה ערכי NULL בערך שתציבי, אם אני לא טועה באקסס יש לה שם אחר
 

tirza

New member
תודה! אבל

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

דממה

New member
מתמטיקה פשוטה

את אומרת שאת לא מעוניינת לספור מופעים ריקים או שווים ל-0 במניין המתחלקים בממוצע, אלא לחשב את הממוצע רק לפי השדות המלאים. אפשר לבנות את המחלק בצורה דינמית, לדוגמא נציב 0 בעבור משבצת ריקה ו-1 בעבור משבצת בעלת ערך ונחלק בסכום שנקבל:
SELECT Fish1, Fish2, Fish3, (ISNULL(Fish1,0) + ISNULL(Fish2,0) + ISNULL(Fish3,0)) / ( CASE ISNULL(Fish1,0) WHEN 0 THEN 0 ELSE 1 END + CASE ISNULL(Fish2,0) WHEN 0 THEN 0 ELSE 1 END + CASE ISNULL(Fish3,0) WHEN 0 THEN 0 ELSE 1 END ) AS Average FROM Fish​
בצעי התאמה לסינטקס של אקסס - זהו סינטקס של T-SQL.
 

tirza

New member
רוב תודות! הצלחתי!

המתמטיקה פשוטה אבל הסינטקס לא.
 

24sharon

New member
אולי תגלי איך../images/Emo35.gif

ניסיתי בשבילך ללא כ"כ הצלחה? אם יש ערך חסר לדג, את הרי צריכה לחלק ל-2 וכד' מה שעלה בראשי הוא ליצור עמודה נוספת שתתעדכן בטופס העדכון של הנתונים מס' נתונים שנמצאים, ז"א אם יש לדג את כל הפרטים יהיה כתוב בה 3 ואם יש לדג רק 2 פרטים (=אורכים) יהיה כתוב בה 2 ואז את מחברת את כולם (הופכת NULL ל-0) ומחלקת במספר שכתוב בעמודה הנוספת. מעניין אותי אם זו הדרך שהשתמשת בה, או בדרך אחרת? שבת שלום!
 

tirza

New member
אני רושמת בעמודה חדשה בשאילתה

WAvg: (NZ([1Weight],0)+NZ([2Weight],0)+NZ([3Weight],0)+NZ([4Weight],0)+NZ([5Weight],0)) / (IIf(IsNull([1Weight]),0,1)+IIf(IsNull([2Weight]),0,1)+IIf(IsNull([3Weight]),0,1)+IIf(IsNull([4Weight]),0,1)+IIf(IsNull([5Weight]),0,1)) נראה לי שהסוגריים קצת התערבבו. הנוסחא על משקלים ולא על אורכים אבל העיקרון זהה. ותודה על הניסיון
 
למעלה