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

SQLite Avg()のしくみ

    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()の結果を微調整するを参照してください。


    1. データ生成とハードウェア品質

    2. 挿入と更新の両方のMySQLFireトリガー

    3. OracleでのCTEの作成

    4. OracleのTAN()関数