SQL 速習チュートリアル

SQL AVG() 関数

1. SQL AVG() 関数

AVG() 関数は、数値カラムの平均値をリターンします。

この AVG() 関数は、カラム内の NULL 値を無視して計算を行います。

1.1 例(自分専用の SQL Server を取得)

全製品の平均価格を算出する:

-- 全製品の価格の平均を取得 --
SELECT AVG(Price)
FROM Products;

注意:NULL 値は計算対象から除外されます。

2. AVG() のシンタックス

SELECT AVG(column_name)
FROM table_name
WHERE condition;

3. デモ用データベース

以下は、例題で使用する Products テーブルの抜粋です。

ProductIDProductNameSupplierIDCategoryIDUnitPrice
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

4. WHERE 句の追加

WHERE 句を追加することで、特定の条件を指定して集計できます。

4.1 例

カテゴリ 1 に属する製品の平均価格をリターンする:

-- カテゴリIDが1の製品のみで平均価格を算出 --
SELECT AVG(Price)
FROM Products
WHERE CategoryID = 1;

5. エイリアス(Alias)の使用

AS キーワードを使用して、集計結果のカラムに名前を付与します。

5.1 例

カラム名を "average price" に設定する場合:

-- 平均価格に 'average price' という別名を付けて取得 --
SELECT AVG(Price) AS [average price]
FROM Products;

6. 平均より高いデータの抽出

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

6.1 例

平均価格よりも高いすべての製品をリターンする:

-- サブクエリで算出した全体の平均値より高い製品を抽出 --
SELECT * FROM Products
WHERE price > (SELECT AVG(price) FROM Products);

7. GROUP BY と AVG() の併用

ここでは AVG() 関数と GROUP BY 句を併用して、"Products" テーブルのカテゴリごとの平均価格をリターンします。

7.1 例

-- カテゴリIDごとにグループ化し、それぞれの平均価格を算出 --
SELECT AVG(Price) AS AveragePrice, CategoryID
FROM Products
GROUP BY CategoryID;