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

SQLite AVG

    概要 :このチュートリアルでは、SQLite AVGの使用方法を学習します 一連の値の平均値を計算する関数。

    SQLiteAVG関数の概要

    AVG 関数は、すべての非NULL値の平均値を計算する集計関数です。 グループ内。

    次に、AVGの構文を示します。 機能:

    AVG([ALL | DISTINCT] expression);Code language: SQL (Structured Query Language) (sql)

    デフォルトでは、AVG 関数はALLを使用します 指定するかどうかに関係なく句。これは、AVG関数が平均値を計算するときにNULL以外のすべての値を取得することを意味します。

    個別の(または一意の)値の平均値を計算する場合は、式でDISTINCT句を明示的に指定する必要があります。

    列に整数、実数、BLOB、テキストなどの混合データ型が格納されている場合、SQLite AVG 関数は、数値のように見えないBLOBをゼロ(0)として解釈します。

    AVGの値 関数は常に浮動小数点値またはNULL 価値。 AVG 関数はNULLのみを返します 値ifand only if グループ内のすべての値はNULLです 値。

    簡単なテストを行って、SQLite関数がさまざまなデータ型でどのように機能するかを確認できます。

    まず、avg_testsという名前の新しいテーブルを作成します 次のステートメントを使用します:

    CREATE TABLE avg_tests (val);Code language: SQL (Structured Query Language) (sql)

    試してみてください

    次に、いくつかの混合値をavg_testsに挿入します テーブル。

    INSERT INTO avg_tests (val)
    VALUES
     (1),
     (2),
     (10.1),
     (20.5),
     ('8'),
     ('B'),
     (NULL),
     (x'0010'),
     (x'0011');Code language: SQL (Structured Query Language) (sql)

    試してみてください

    次に、avg_testsからデータをクエリします テーブル。

    SELECT rowid,
           val
      FROM avg_tests;Code language: SQL (Structured Query Language) (sql)

    試してみてください

    その後、AVGを使用できます 数値のみを含む最初の4行の平均を計算する関数。

    SELECT
    	avg(val)
    FROM
    	avg_tests
    WHERE
    	rowid < 5;Code language: SQL (Structured Query Language) (sql)

    試してみてください

    最後に、AVGを適用します valのすべての値に機能します avg_testsの列 テーブル。

    SELECT
    	avg(val)
    FROM
    	avg_tests;Code language: SQL (Structured Query Language) (sql)

    試してみてください

    avg_testsには9行あります テーブル。行7はNULLです 。したがって、平均を計算するときは、AVG 関数はそれを無視し、計算に8行を取ります。

    最初の4行は整数値と実数値です:1、2、10.1、および20.5。 SQLite AVG関数は、これらの値を計算に使用します。

    5行目と6行目は、「B」と「8」を挿入したため、テキストタイプです。 8は数字のように見えるため、SQLiteはBを0として解釈し、「8」を8として解釈します。

    8行目と9行目はBLOBです。 数値のように見えないタイプであるため、SQLiteはこれらの値を0として解釈します。

    AVG(cal) 式は次の式を使用します:

    AVG(val) = (1 + 2 + 10.1 + 20.5 + 8 + 0 + 0 + 0 )/ 8 = 5.2Code language: SQL (Structured Query Language) (sql)

    DISTINCTがどのようになっているのか見てみましょう 条項は機能します。

    まず、avg_testsに新しい行を挿入します 値を持つテーブルはすでに存在します。

    INSERT INTO avg_tests (val)
    VALUES (10.1);Code language: SQL (Structured Query Language) (sql)

    試してみてください

    次に、AVGを適用します DISTINCTなしで機能する 条項:

    SELECT
    	avg(val)
    FROM
    	avg_tests;Code language: SQL (Structured Query Language) (sql)

    試してみてください

    3番目に、DISTINCTを追加します AVGの句 機能:

    SELECT
    	avg(DISTINCT val)
    FROM
    	avg_tests;Code language: SQL (Structured Query Language) (sql)

    試してみてください

    avg_tests テーブルには、同じ値10.1の2つの行、AVG(DISTINCT)があります。 計算には1行だけかかります。したがって、異なる結果が得られます。

    SQLite AVG 機能の実例

    tracksを使用します デモンストレーション用のサンプルデータベースのテーブル。

    すべてのトラックの平均の長さをミリ秒単位で計算するには、次のステートメントを使用します。

    SELECT
    	avg(milliseconds)
    FROM
    	tracks;Code language: SQL (Structured Query Language) (sql)

    試してみてください

    GROUP BYを使用したSQLiteAVG関数 条項

    すべてのアルバムのトラックの平均の長さを計算するには、AVGを使用します GROUP BYで機能する 条項。

    まず、GROUP BY 句は、アルバムごとに一連のトラックをグループ化します。次に、AVG 関数は、各アルバムのトラックの平均の長さを計算します。

    次のステートメントを参照してください。

    SELECT
    	albumid,
    	avg(milliseconds)
    FROM
    	tracks
    GROUP BY
    	albumid;Code language: SQL (Structured Query Language) (sql)

    試してみてください

    SQLite AVG INNER JOINで機能する 条項の例

    albumidと一緒にアルバムタイトルを取得するには 列では、次のクエリのように、上記のステートメントでINNERJOIN句を使用します。

    SELECT
    	tracks.AlbumId,
    	Title,
    	round(avg(Milliseconds), 2) avg_length
    FROM
    	tracks
    INNER JOIN albums ON albums.AlbumId = tracks.albumid
    GROUP BY
    	tracks.albumid;Code language: SQL (Structured Query Language) (sql)

    試してみてください

    ROUNDを使用したことに注意してください 浮動小数点値を小数点の右側の2桁に丸める関数。

    HAVING句の例を使用したSQLiteAVG関数

    AVGのいずれかを使用できます グループをフィルタリングするためのHAVING句の関数またはその列のエイリアス。次のステートメントは、平均の長さが100000〜200000のアルバムのみを取得します。

    SELECT
    	tracks.albumid,
    	title,
    	round(avg(milliseconds),2)  avg_leng
    FROM
    	tracks
    INNER JOIN albums ON albums.AlbumId = tracks.albumid
    GROUP BY
    	tracks.albumid
    HAVING
    	avg_leng BETWEEN 100000 AND 200000;Code language: SQL (Structured Query Language) (sql)

    試してみてください

    このチュートリアルでは、SQLite AVGの使用方法を説明しました。 グループ内のNULL以外の値の平均値を計算する関数。


    1. 文字列内の文字と数字の数を見つける

    2. SQLServerデータベースサイズを選択します

    3. MariaDBにデータを挿入するときの「エラー1136(21S01):列数が行1の値数と一致しない」を修正

    4. ORACLEJOINを使用してLEFTOUTERJOINまたはRIGHTOUTERJOINを見つける方法(+)