SQLで平均値を計算するAVG関数の使い方と実践例

SQLのAVG関数を使った平均値の計算方法について、基本から応用まで詳しく解説します。実務でよく使うケースや注意点など、具体的なコード例を交えながら説明していきますが、あなたはSQLで平均値を正しく扱えていますか?

SQLで平均値を計算する方法

SQLの平均値計算の基礎知識
📊
基本的な計算方法

AVG関数を使用して列の平均値を簡単に計算できます

🔍
データの集計

GROUP BY句と組み合わせて複数の集計が可能です

パフォーマンス

大量データの処理でも高速に計算を実行できます

SQLのAVG関数の基本的な使い方

AVG関数は、指定した列の平均値を計算する最も基本的な関数です。基本構文は以下のようになります:


SELECT AVG(カラム名) FROM テーブル名

 

具体的な使用例を見てみましょう:


-- 売上データの平均を計算する
SELECT AVG(amount) AS average_amount FROM sales
-- 部門ごとの平均給与を計算する
SELECT department, AVG(salary) AS average_salary 
FROM employees 
GROUP BY department

SQLで平均値を四捨五入や切り捨てする方法

平均値の計算結果を整形するために、ROUND関数やTRUNC関数を使用することができます:


-- 小数点以下2桁に四捨五入
SELECT ROUND(AVG(salary), 2) AS rounded_avg 
FROM employees
-- 小数点以下を切り捨て
SELECT TRUNC(AVG(salary)) AS truncated_avg 
FROM employees

SQLで平均値をグループ化して計算する高度な使い方

GROUP BY句を使用することで、より複雑な集計が可能になります:


-- 部門と役職ごとの平均給与を計算
SELECT 
    department,
    position,
    AVG(salary) AS avg_salary,
    COUNT(*) AS employee_count
FROM employees
GROUP BY department, position
HAVING AVG(salary) > 300000

SQLで平均値計算時のNULL値の扱い方

NULL値の扱いは平均値の計算結果に大きく影響します。以下のような対処方法があります:


-- NULL値を0として計算
SELECT AVG(COALESCE(value, 0)) AS average_with_zeros
FROM measurements
-- NULL値を除外して計算
SELECT AVG(value) AS average_without_nulls
FROM measurements
WHERE value IS NOT NULL

SQLで平均値の異常値を検出する実践的な方法

標準偏差を使用して、異常値を検出する方法を紹介します:


-- 平均値から標準偏差の2倍以上離れた値を検出
WITH stats AS (
    SELECT 
        AVG(value) AS avg_value,
        STDDEV(value) AS stddev_value
    FROM measurements
)
SELECT m.*
FROM measurements m, stats
WHERE m.value > (stats.avg_value + 2 * stats.stddev_value)
   OR m.value < (stats.avg_value - 2 * stats.stddev_value)

 

これらの方法を組み合わせることで、より正確で意味のある平均値の分析が可能になります。