avg()
について知っている場合 SQLiteの関数を使用すると、NULL以外のすべてのXの平均を返すことをご存知でしょう。 グループ内。
しかし、DISTINCT
を追加できることをご存知でしたか この関数のキーワード?
DISTINCT
を追加した場合 キーワード、avg()
個別の値のみに基づいて結果を計算します。これは基本的に、重複する値を削除してから残りの値の平均を計算することと同じです。
構文
DISTINCT
を使用するには キーワードの場合、最初の引数として挿入するだけです。
このように:
avg(DISTINCT X)
ここでX
平均を計算する列名です。
例
Products
という次の表を見てください :
ProductId ProductName Price ---------- ------------- ---------- 1 Widget Holder 139.5 2 Blue Widget 10.0 3 Red Widget 10.0 4 Green Widget 10.0 5 Widget Stick 89.75 6 Foo Cap 11.99
通常のavg()
を実行した場合 [価格]列:
SELECT avg(Price) FROM Products;
これが私が得るものです:
45.2066666666667
しかし、DISTINCT
を実行すると クエリ:
SELECT avg(DISTINCT Price) FROM Products;
私はこれを手に入れました:
62.81
したがって、この場合、結果が大幅に変わります。
明確にするために、ここではそれらを並べています:
SELECT
avg(Price) AS "Non-Distinct",
avg(DISTINCT Price) AS "Distinct"
FROM Products;
結果:
Non-Distinct Distinct ---------------- ---------- 45.2066666666667 62.81
ご想像のとおり、DISTINCT
を使用します avg()
を含むキーワード 特に範囲の一方の端に多数の重複があるが、もう一方の端には多くの重複がない場合、結果が大幅に歪む可能性があります。