MySQL AVG() 関数
1. MySQL AVG() 関数
AVG() 関数は、数値カラムの平均値を返します。
この関数は、計算を行う際にカラム内の NULL値 を無視して処理を行います。
1.1 AVG() の構文
SELECT AVG(column_name)
FROM table_name
WHERE condition;2. デモ用データベース
以下は、Northwind サンプルデータベースの「Products(製品)」テーブルから抽出したデータの一部です。
| ProductID | ProductName | SupplierID | CategoryID | Unit | UnitPrice |
|---|---|---|---|---|---|
| 1 | Chais | 1 | 1 | 10 boxes x 20 bags | 18.00 |
| 2 | Chang | 1 | 1 | 24 - 12 oz bottles | 19.00 |
| 3 | Aniseed Syrup | 1 | 2 | 12 - 550 ml bottles | 10.00 |
| 4 | Chef Anton's Cajun Seasoning | 2 | 2 | 48 - 6 oz jars | 22.00 |
| 5 | Chef Anton's Gumbo Mix | 2 | 2 | 36 boxes | 21.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);