sql >> Databáze >  >> RDS >> SQLite

SQLite Sum() vs Total():Jaký je rozdíl?

SQLite má funkci nazvanou sum() a další funkce nazvaná total() . Obě funkce dělají v podstatě totéž – vrací součet všech hodnot ve skupině, které nejsou NULL.

Mezi těmito dvěma funkcemi je však jemný rozdíl.

Rozdíl je ve způsobu, jakým zpracovávají NULL vstupy.

Rozdíl

Zde se tyto dvě funkce liší.

Pokud neexistují žádné vstupní řádky jiné než NULL:

  • sum() vrátí hodnotu NULL
  • total() vrátí 0,0

Příklad

Zde je příklad, který demonstruje rozdíl mezi SQLite sum() a total() funkce.

SELECT 
  sum(NULL),
  total(NULL);

Výsledek:

sum(NULL)   total(NULL)
----------  -----------
            0.0        

První sloupec je prázdný, protože je NULL.

Proč ten rozdíl?

Důvod, proč máme dvě funkce, které dělají totéž, s výjimkou tohoto jediného rozdílu je ten, že sum() je plně v souladu se standardy. Standard SQL vyžaduje sum() funkce vrací NULL, když je její vstup NULL.

Vrácení NULL může být v souladu se standardy, ale není to příliš užitečné, pokud očekáváte číslo.

total() funkce byla proto poskytnuta jako užitečnější alternativa k sum() .

Můžete si vybrat, kterou funkci chcete použít, v závislosti na tom, jak chcete, aby funkce pracovala s hodnotami NULL (a jak chcete být v souladu se standardy).

Vaše rozhodnutí může být ovlivněno také tím, jak přenosný chcete, aby byl váš kód. sum() se zdá být běžněji používaným názvem funkce v jiných hlavních DBMS.


  1. T-SQL úterý #64:Jeden spouštěč nebo mnoho?

  2. Typy kurzoru SQL Server - Dynamický kurzor | Kurz SQL Server / Kurz TSQL

  3. Co je duální tabulka v Oracle?

  4. Možné způsoby, jak opravit problém s poškozením metadat serveru SQL Server