Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:
Databricks SQL
Databricks Runtime 11.3 LTS ve üzeri
Bir grubun değerlerinden hesaplanan toplamı veya taşma varsa NULL değerini döndürür.
Sözdizimi
try_sum ( [ALL | DISTINCT] expr ) [FILTER ( WHERE cond ) ]
Bu işlev, kullanılarak bir OVER olarak da çağrılabilir.
Argümanlar
-
expr: Sayısal veya aralık olarak değerlendirilen ifade. -
cond: Toplama işleminde kullanılacak satırları filtrelemek için isteğe bağlı bir boole ifadesi.
İadeler
expr tam sayı türündeyse, bir BIGINT.
Eğer exprDECIMAL(p, s) ise, sonuç DECIMAL(p + min(10, 31-p), s) olur.
Bir aralıksa expr sonuç türü ile eşleşir expr.
Aksi takdirde, bir DOUBLE.
DISTINCT belirtilirse yalnızca benzersiz değerler toplanır.
Sonuç, sonuç türünü aşarsa Databricks SQL NULL döndürür. Bunun yerine hata döndürmek için sum kullanın.
Örnekler
> SELECT try_sum(col) FROM VALUES (5), (10), (15) AS tab(col);
30
> SELECT try_sum(col) FILTER(WHERE col <15)
FROM VALUES (5), (10), (15) AS tab(col);
15
> SELECT try_sum(DISTINCT col) FROM VALUES (5), (10), (10), (15) AS tab(col);
30
> SELECT try_sum(col) FROM VALUES (NULL), (10), (15) AS tab(col);
25
> SELECT try_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
-- 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