MariaDBでは、AVG()
関数は、指定された式の平均値を返します。
DISTINCT
オプションを使用して、個別の値の平均を返すことができます(つまり、平均を計算する前に重複を削除します)。
NULL
値は無視されます。
サンプルデータ
次のデータを含むテーブルがあるとします。
SELECT
VendorId,
ProductName,
ProductPrice
FROM Products;
結果:
+----------+---------------------------------+--------------+ | VendorId | ProductName | ProductPrice | +----------+---------------------------------+--------------+ | 1001 | Left handed screwdriver | 25.99 | | 1001 | Right handed screwdriver | 25.99 | | 1001 | Long Weight (blue) | 14.75 | | 1001 | Long Weight (green) | 11.99 | | 1002 | Sledge Hammer | 33.49 | | 1003 | Chainsaw | 245.00 | | 1003 | Straw Dog Box | 55.99 | | 1004 | Bottomless Coffee Mugs (4 Pack) | 9.99 | +----------+---------------------------------+--------------+
例
次のクエリを使用して、すべての価格の平均を取得できます。
SELECT AVG(ProductPrice)
FROM Products;
結果:
52.898750
この場合、価格情報はProductPrice
に保存されます 列なので、それを引数としてAVG()
に渡しました。 次に、平均を計算して結果を返す関数。
フィルタリングされた結果
AVG()
関数は、クエリによって返された行を操作します。したがって、結果をフィルタリングすると、AVG()
の結果になります。 それを反映します。
SELECT AVG(ProductPrice)
FROM Products
WHERE VendorId = 1001;
結果:
19.680000
この場合、19.680000は、指定されたベンダーが提供するすべての製品の平均価格です。
DISTINCT
キーワード
DISTINCT
を使用できます AVG()
を含むキーワード 個別の値のみを計算します。つまり、重複する値がある場合、それらは1つの値として扱われます。
例:
SELECT
AVG(ProductPrice) AS "All",
AVG(DISTINCT ProductPrice) AS "Distinct"
FROM Products;
結果:
+-----------+-----------+ | All | Distinct | +-----------+-----------+ | 52.898750 | 56.742857 | +-----------+-----------+
この場合、2つのアイテムの価格は同じです(左ドライバーと右ドライバーの価格はどちらも25.99です)。したがって、AVG()
DISTINCT
とともに使用した場合の関数 キーワードは、これらの値の両方を1つとして扱い、それに応じて結果を計算します。
ウィンドウ関数
AVG()
関数はウィンドウ関数で使用できます。 SQL AVG()
を参照してください この例については、初心者向けです。