MySQL 速習チュートリアル

MySQL AVG() 関数

1. MySQL AVG() 関数

AVG() 関数は、数値カラムの平均値を返します。

この関数は、計算を行う際にカラム内の NULL値 を無視して処理を行います。

1.1 AVG() の構文

SELECT AVG(column_name)
FROM table_name
WHERE condition;

2. デモ用データベース

以下は、Northwind サンプルデータベースの「Products(製品)」テーブルから抽出したデータの一部です。

ProductIDProductNameSupplierIDCategoryIDUnitUnitPrice
1Chais1110 boxes x 20 bags18.00
2Chang1124 - 12 oz bottles19.00
3Aniseed Syrup1212 - 550 ml bottles10.00
4Chef Anton's Cajun Seasoning2248 - 6 oz jars22.00
5Chef Anton's Gumbo Mix2236 boxes21.35

3. AVG() の使用例

以下のSQLは、すべての製品の価格(Price)の平均を算出します。

実行例

独自のSQLサーバーで試してみましょう:

/* 全製品の平均価格を算出する */
SELECT AVG(Price)
FROM Products;

       注意: 前述の通り、NULL値は計算から除外されます。

4. WHERE句を伴う集計

WHERE句を追加することで、特定の条件に合致するデータのみを対象に平均値を計算できます。

実行例

カテゴリID(CategoryID)が「1」である製品の平均価格を返します。

/* カテゴリ1に属する製品の平均価格を取得 */
SELECT AVG(Price)
FROM Products
WHERE CategoryID = 1;

5. 平均値より高いデータを抽出する(サブクエリ)

平均価格よりも高い価格が設定されているすべてのレコードをリストアップするには、AVG() 関数をサブクエリ内で使用します。

実行例

平均価格を上回るすべての製品を取得します。

/* 全体の平均価格よりも高い製品をすべて抽出 */
SELECT * FROM Products
WHERE price > (SELECT AVG(price) FROM Products);