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()を使用して個別の値だけを追加する方法を参照してください。