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

SQLite Sum()のしくみ

    SQLite sum() 関数は、グループ内のすべてのNULL以外の値の合計を返します。

    NULL以外の値がない場合は、NULLを返します。

    この関数を使用すると、基本的に、結果セットまたはテーブルのすべての値を合計できます。

    使用法を示す例を次に示します。

    SELECT sum(Price) FROM Products;

    結果:

    738.22

    表に実際の値が表示されない場合、この例はおそらく意味がありません。

    これは、そのテーブルのすべての行を返すクエリです。

    SELECT * FROM Products;

    結果:

    ProductId   ProductName            Price     
    ----------  ---------------------  ----------
    1           Blue Widgets (6 Pack)  389.45    
    2           Widget Holder          139.5     
    3           Widget Opener          89.27     
    4           Foobar Set             120.0     
    5           Red Widget                    

    したがって、sum() 関数は、価格のすべての値を追加するだけです。 列。

    最後の行の価格がNULLであることに注意してください。それで大丈夫です。 sum() 関数は、NULL以外のすべての値を追加するだけです。

    NULL値

    NULL以外の値がない場合、結果はNULLになります。

    SELECT sum(Price) 
    FROM Products
    WHERE ProductId = 5;

    結果:

          

    (NULLが返されたため、意図的に空白になっています)。

    これは、SQLiteのtotal()の方法とは異なります。 関数はNULL値を処理します(0.0を返します)。両方のsum() およびtotal() この違いを除いて、同じことをします。

    より小さな結果セット

    最初の例では、テーブルのすべての行を追加しました。ただし、テーブル全体である必要はありません。 「NULL」の例に見られるように、WHEREを使用することもできます テーブルに値のサブセットを追加する句。

    WHEREを使用する別の例を次に示します。 句。

    SELECT sum(Price) 
    FROM Products
    WHERE ProductId < 3;

    結果:

    528.95

    今回はNULL以外の値を追加しているので、NULL以外の結果が得られます。

    これは、追加しているのと同じ列でフィルタリングする別の列です。

    SELECT sum(Price) 
    FROM Products
    WHERE Price > 100;

    結果:

    648.95

    非整数入力

    入力が整数でもNULLでもない場合は、sum() 真の合計の近似値である可能性のある浮動小数点値を返します。

    このような場合、予期しない結果が生じる可能性があります。

    以下は、一連のファックス番号を追加しようとする例です。

    まず、FAX番号のリストを見てみましょう。

    SELECT Fax FROM Customer 
    WHERE Fax IS NOT NULL;

    結果:

    Fax               
    ------------------
    +55 (12) 3923-5566
    +420 2 4172 5555  
    +55 (11) 3033-4564
    +55 (11) 3055-8131
    +55 (21) 2271-7070
    +55 (61) 3363-7855
    +1 (780) 434-5565 
    +1 (604) 688-8756 
    +1 (650) 253-0000 
    +1 (425) 882-8081 
    +1 (212) 221-4679 
    +1 (408) 996-1011 

    これらを合計しようとすると、次のようになります。

    SELECT sum(Fax) 
    FROM Customer;

    結果:

    701.0 

    この場合、すべてのプレフィックスが追加されているようです。

    sum()を使用するとどうなりますか 文字列の列に。

    SELECT sum(ProductName) 
    FROM Products;

    結果:

    0.0

    DISTINCTキーワード

    DISTINCTを追加できます 個別の値のみを追加するキーワード。これを行うには、sum(DISTINCT X)を使用します ここで、X は列名です。

    例については、SQLite Sum()を使用して個別の値だけを追加する方法を参照してください。


    1. 初心者のためのSQLHAVING句

    2. LEFT OUTER JOINは、どのようにして左側のテーブルに存在するよりも多くのレコードを返すことができますか?

    3. PL/pgSQL関数から不明な列を持つ動的テーブルを返します

    4. AndroidのSqliteの行を更新できませんが、エラーはスローされません