Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:
Databricks SQL
Databricks Runtime 11.3 LTS ke atas
Mengembalikan jumlah yang dihitung dari nilai grup, atau NULL jika ada luapan.
Sintaks
try_sum ( [ALL | DISTINCT] expr ) [FILTER ( WHERE cond ) ]
Fungsi ini juga dapat dipanggil sebagai fungsi jendela dengan klausa OVER.
Argumen
-
expr: Ekspresi yang dievaluasi menjadi numerik atau interval. -
cond: Ekspresi boolean opsional yang memfilter baris yang digunakan untuk agregasi.
Pengembalian
Jika expr adalah jenis angka integral, maka BIGINT.
Jika expr adalah DECIMAL(p, s), maka hasilnya adalah DECIMAL(p + min(10, 31-p), s).
Jika expr adalah interval, jenis hasil cocok dengan expr.
Jika tidak, DOUBLE.
Jika DISTINCT ditentukan, hanya nilai unik yang dijumlahkan.
Jika hasilnya meluap, jenis hasil Databricks SQL akan mengembalikan NULL. Untuk mengembalikan kesalahan, gunakan jumlah.
Contoh
> 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