إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
ينطبق على:
Databricks SQL
Databricks Runtime 11.3 LTS وما فوق
إرجاع المتوسط المحسوب من قيم مجموعة. إذا كان هناك تجاوز، يتم إرجاع NULL.
بناء الجملة
try_avg( [ALL | DISTINCT] expr) [FILTER ( WHERE cond ) ]
يمكن أيضا استدعاء هذه الدالة كدالة نافذة باستخدام العبارة OVER .
الوسيطات
expr: تعبير يرجع قيمة رقمية أو قيمة فاصل زمني.cond: تعبير منطقي اختياري يقوم بتصفية الصفوف المستخدمة للتجميع.
المرتجعات
يتم حساب نوع النتيجة بالنسبة للوسيطات:
DECIMAL(p, s): نوع النتيجة هو .DECIMAL(p + 4, s + 4)إذا تم الوصول إلى الدقة القصوى ل DECIMAL، فإن الزيادة في المقياس ستكون محدودة لتجنب فقدان أرقام كبيرة.- الفاصل الزمني للشهر السنوي: النتيجة هي
INTERVAL YEAR TO MONTH. - الفاصل الزمني لليوم: النتيجة هي
INTERVAL YEAR TO SECOND. - في جميع الحالات الأخرى تكون النتيجة DOUBLE.
يتم تجاهل القيم الخالية داخل المجموعة. إذا كانت المجموعة فارغة أو تتكون فقط من القيم الخالية، تكون النتيجة NULL.
إذا DISTINCT تم تحديد، يتم حساب المتوسط بعد إزالة التكرارات.
لرفع خطأ بدلا من NULL في حالة تجاوز الحد الأدنى، استخدم المتوسط.
الأمثلة
> SELECT try_avg(col) FROM VALUES (1), (2), (3) AS tab(col);
2.0
> SELECT try_avg(DISTINCT col) FROM VALUES (1), (1), (2) AS tab(col);
1.5
> SELECT try_avg(col) FROM VALUES (1), (2), (NULL) AS tab(col);
1.5
> SELECT try_avg(col) FROM VALUES (INTERVAL '1' YEAR), (INTERVAL '2' YEAR) AS tab(col);
1-6
-- Overflow results in NULL for try_avg()
> SELECT try_avg(col) FROM VALUES (5e37::DECIMAL(38, 0)), (5e37::DECIMAL(38, 0)) AS tab(col);
NULL
-- Overflow causes error for avg() in ANSI mode.
> SELECT avg(col) FROM VALUES (5e37::DECIMAL(38, 0)), (5e37::DECIMAL(38, 0)) AS tab(col);
Error: CANNOT_CHANGE_DECIMAL_PRECISION