إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
ينطبق على:
Databricks SQL
Databricks Runtime
إرجاع المجموع المحسوب من قيم مجموعة.
بناء الجملة
sum ( [ALL | DISTINCT] expr ) [FILTER ( WHERE cond ) ]
يمكن أيضا استدعاء هذه الدالة كدالة نافذة باستخدام العبارة OVER .
الوسيطات
expr: تعبير يتم تقييمه إلى رقم أو فاصل زمني.cond: تعبير منطقي اختياري يقوم بتصفية الصفوف المستخدمة للتجميع.
المرتجعات
إذا كان expr نوع رقم لا يتجزأ، فقم ب BIGINT.
إذا كانت expr النتيجة هي DECIMAL(p + min(10, 31-p), s).DECIMAL(p, s)
إذا كان expr فاصلا زمنيا، يتطابق نوع النتيجة مع expr.
وإلا، فإن DOUBLE.
إذا DISTINCT تم تحديد قيم فريدة فقط يتم تلخيصها.
إذا تجاوزت النتيجة نوع النتيجة Databricks SQL يثير خطأ ARITHMETIC_OVERFLOW .
لإرجاع بدلا NULL من ذلك استخدم try_sum.
تحذير
في Databricks Runtime، إذا كان spark.sql.ansi.enabled هو false، فإن تجاوز السعة BIGINT لا يسبب خطأ ولكنه "يلتف" النتيجة بدلا من ذلك.
الأمثلة
> SELECT sum(col) FROM VALUES (5), (10), (15) AS tab(col);
30
> SELECT sum(col) FILTER(WHERE col <15)
FROM VALUES (5), (10), (15) AS tab(col);
15
> SELECT sum(DISTINCT col) FROM VALUES (5), (10), (10), (15) AS tab(col);
30
> SELECT sum(col) FROM VALUES (NULL), (10), (15) AS tab(col);
25
> SELECT sum(col) FROM VALUES (NULL), (NULL) AS tab(col);
NULL
-- try_sum overflows a BIGINT
> SELECT try_sum(c1) FROM VALUES(5E18::BIGINT), (5E18::BIGINT) AS tab(c1);
NULL
-- In ANSI mode sum returns an error if it overflows BIGINT
> SELECT sum(c1) FROM VALUES(5E18::BIGINT), (5E18::BIGINT) AS tab(c1);
Error: ARITHMETIC_OVERFLOW
-- try_sum overflows an INTERVAL
> SELECT try_sum(c1) FROM VALUES(INTERVAL '100000000' YEARS), (INTERVAL '100000000' YEARS) AS tab(c1);
NULL
-- sum returns an error on INTERVAL overflow
> SELECT sum(c1) FROM VALUES(INTERVAL '100000000' YEARS), (INTERVAL '100000000' YEARS) AS tab(c1);
Error: ARITHMETIC_OVERFLOW