0 / 0
Go back to the English version of the documentation
Funkce SUM () nebo AVG () vrací chybu v produktu Watson Query
Last updated: 31. 3. 2023
Funkce SUM () nebo AVG () vrací chybu v produktu Watson Query

Při použití funkce SUM () nebo AVG () v určitých příkazech SQL se můžete setkat s chybou SQL0802N .

Projevy

Funkci SUM () nebo AVG () lze použít ve vašich příkazech SQL. Určité příkazy SQL mohou selhat s touto chybovou zprávou:
SQL0802N Došlo k aritmetickému přetečení nebo došlo k jiné aritmetické výjimce.

příčiny

Při spuštění funkce SUM () nebo AVG () může při spuštění funkce SUM () nebo AVG () nastat aritmetické operace přetečení, pokud daný typ zpracování není dostatečně velký, aby mohl zpracovat množství zpracovaných dat. Například aritmetické přetečení může nastat během provedení funkce SUM () celočíselného sloupce, pokud hodnota sečtených dat překračuje maximální velikost celého čísla.

V závislosti na tom, kde se v dotazu používá funkce SUM () nebo AVG (), se chyba může také vyskytnout, pokud existuje změna plánu, která způsobí, že funkce bude zpracována více dat, a výsledek nebo mezilehlý výsledek je příliš velký.

Řešení problému

Chcete-li tyto problémy vyřešit, vyberte jednu z následujících metod na základě příčiny a datových typů argumentů funkce.

  • Změňte datový typ argumentu, který je odkazován ve funkci, nebo přidejte specifikaci CAST. Např. můžete změnit datový typ argumentu z INT na BIGINT (nebo DECIMAL) nebo můžete přetypovat argument funkce na BIGINT (nebo DECIMAL). Je-li datový typ argumentu DECIMAL, může být zapotřebí přetypování, aby bylo možné upravit přesnost a měřítko dat, aby nedocházelo k přetečení.
    Poznámka: Přidání příkazu CAST může změnit přístupový plán nebo výkon dotazu.
  • Zakažte časnou agregaci pro všechny dotazy změnou proměnné registru DB2_DV_OVERRIDES . Administrátor platformy musí spustit následující příkaz ze sekce c-dv2u-cv-db2u-0 .
    db2set | grep DB2_DV_OVERRIDES; 
    db2set -im DB2_DV_OVERRIDES="Existing_values, NO_EAGGB";
    db2 flush package cache dynamic; 
  • Zakažte časnou agregaci pro tento dotaz pouze přidáním nastavení NO_EAGGB jako pokynu optimalizátoru, jak je zobrazeno v následujícím příkladu.
    select .... 
             SUM() .... 
              /* <OPTGUIDELINES>
                      <REGISTRY>
                      <OPTION NAME='DB2_DV_OVERRIDES'   VALUE='Existing_values,NO_EAGGB'/>
                      </REGISTRY>
                 </OPTGUIDELINES> */
    
  • Další informace viz následující prostředky:
Generative AI search and answer
These answers are generated by a large language model in watsonx.ai based on content from the product documentation. Learn more