sql >> データベース >  >> RDS >> SQLite

SQLite Sum()とTotal():違いは何ですか?

    SQLiteにはsum()という関数があります total()と呼ばれる別の関数 。どちらの関数もほとんど同じことを行います。グループ内のすべてのNULL以外の値の合計を返します。

    ただし、これら2つの機能には微妙な違いがあります。

    違いは、NULL入力の処理方法にあります。

    違い

    ここで、これら2つの機能が異なります。

    NULL以外の入力行がない場合:

    • sum() NULLを返します
    • total() 0.0を返します

    SQLite sum()の違いを示す例を次に示します。 およびtotal() 機能。

    SELECT 
      sum(NULL),
      total(NULL);

    結果:

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

    最初の列はNULLであるため、空白です。

    なぜ違いがあるのですか?

    この1つの違いを除いて、同じことを行う2つの関数がある理由は、sum() 完全に標準に準拠しています。 SQL標準では、sum() 関数は、入力がNULLの場合にNULLを返します。

    NULLを返すことは標準に準拠している可能性がありますが、数値を期待している場合は特に役立ちません。

    total() したがって、関数はsum()のより便利な代替手段として提供されています。 。

    関数がNULL値をどのように処理するか(および標準にどの程度準拠するか)に応じて、使用する関数を選択できます。

    あなたの決定は、あなたがあなたのコードをどれだけ移植可能にしたいかによっても影響を受けるかもしれません。 sum()は、他の主要なDBMSでより一般的に使用されている関数名のようです。


    1. 記憶圧分析のリスク状態

    2. 他のテーブルに存在しない行を選択します

    3. PostgreSQLの「エラー:各INTERSECTクエリには同じ数の列が必要」を修正しました

    4. MySQLで2つの列を比較する方法