SQLite avg()
関数は、グループ内のすべてのNULL以外の値の平均値を返します。
値または値のグループである1つの引数を受け入れます。
例
次の表を見てください:
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
avg()
を使用できます 価格から平均値を取得する関数 桁。このように:
SELECT avg(Price) FROM Products;
結果:
184.555
WHERE句が結果に与える影響
クエリでWHERE
を使用している場合 句では、平均はWHERE
の後に計算されます 条項が有効になりました。つまり、WHERE
を使用できます avg()
を確実にする句 関数は、関心のある行だけを計算します。
WHERE
を追加するとどうなりますか 前の例の句。
SELECT avg(Price)
FROM Products
WHERE ProductName LIKE '%widget%';
結果:
206.073333333333
結果を丸める
結果は浮動小数点値として返されます(NULLでない場合)。 round()
を使用できます 必要に応じて値を丸める関数。
SELECT round(avg(Price), 2)
FROM Products
WHERE ProductName LIKE '%widget%';
結果:
206.07
結果の制限
LIMIT
句はavg()
の計算には影響しません 関数– avg()
で返される行は1つだけです とにかく機能します。
SELECT avg(Price)
FROM Products
LIMIT 1;
結果:
184.555
とはいえ、ゼロの制限を指定しても、何も返されません。
文字列とBLOB
数値のように見えない文字列とBLOBの値は0として解釈されます。
SELECT avg(ProductName) FROM Products;
結果:
0.0
NULL引数
NULL以外の入力がない場合、avg()関数はNULLを返します。
SELECT avg(NULL);
結果:
(その結果はNULLです。)
ただし、NULL以外の引数が少なくとも1つある場合、NULLは返されません。
これを示すために、ここでは新しい行を挿入しますが、価格はそのままにしておきます NULLの列:
INSERT INTO Products (ProductId, ProductName)
VALUES (5, 'Red Widget');
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
したがって、最後の行には価格がありません–価格 列がNULLです。
avg()
を使用すると 関数の場合でも、NULL以外のすべての行の平均を返します。
SELECT avg(Price) FROM Products;
結果:
184.555
DISTINCTキーワード
DISTINCT
を使用できます キーワードを使用して、列内の個別の値のみの平均を計算します。これには、計算から重複する値を削除する効果があります。
例については、DISTINCTキーワードを使用してSQLiteでAvg()の結果を微調整するを参照してください。