פעם כתבתי קוד לעשות זאת ב-SQL אך לא בפריוריטי, כך אינני בטוח אם מה שכתבתי ישים.
קודם צריך לחשב כמה נתונים יש:
:COUNT = 0;
SELECT COUNT (*) INTO :COUNT
FROM TABLE
WHERE …
אחר כך צריך לחשב את הממוצע
:TOT = 0;
SELECT SUM (FIELD) INTO :TOT
FROM TABLE
WHERE …
:AVG = 0.0 + :TOT/:COUNT;
לאחר מכן ניתן לחשב את סטיית התקן. אפשר לבצע זאת באמצעות קורסור או בשאילתא אחת – עדיף שאילתא אחת אך אינני יודע אם התחביר תקין בפריוריטי
:SD = 0.0;
SELECT SUM (( FIELD – :AVG) * (FIELD – :AVG)) INTO :SD
FROM TABLE
WHERE …
:SD = SQRTM (:SM / :COUNT)
השורה האחרונה אמורה להיות SD שווה לשורש הריבועי SQRTM של SD מחולק ב-COUNT
בגישת הקורסור, מחליפים את המשפט SELECT SUM – מסכמים לכל רשומה את ההפרש בין הערך לבין הממוצע, "מרבעים" אותו וצוברים אותו. המשפט האחרון עם SQRTM נשאר אותו הדבר.
אני מקווה שניתן להתגבר על בעיות התצוגה כאן. בכל מקרה, הצעדים הם:
1. לחשב את מספר האיברים
2. לחשב את סה"כ האיברים ובעקבות כך, לחשב את הממוצע
3. לחשב את סה"כ ההפרש בין האיבר לבין הממוצע בריבוע (הסכום נקרא השונות, VARIANCE)
4. סטיית התקן שווה לשורש הריבועי של השונות מחולק במספר האיברים.