Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:
Databricks SQL
Databricks Runtime 11.3 LTS och senare
Returnerar summan som beräknas från värden för en grupp eller NULL om det finns ett spill.
Syntax
try_sum ( [ALL | DISTINCT] expr ) [FILTER ( WHERE cond ) ]
Den här funktionen kan också anropas som en -fönsterfunktion med hjälp av OVER-satsen.
Argument
-
expr: Ett uttryck som utvärderas till ett numeriskt värde eller ett intervall. -
cond: Ett valfritt booleskt uttryck som filtrerar de rader som används för aggregering.
Returer
Om expr är en integralnummertyp, en BIGINT.
Om expr är DECIMAL(p, s) resultatet är DECIMAL(p + min(10, 31-p), s).
Om expr är ett intervall matchar exprresultattypen .
Annars en DOUBLE.
Om DISTINCT anges summeras endast unika värden.
Om resultatet spills över returnerar resultattypen Databricks SQL NULL. Om du vill returnera ett fel använder du i stället summa.
Exempel
> 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