指定した列の値の平均値を返す集約関数です。
Synopsis
AVG([ALL | DISTINCT] expression)
引数
ALL オプションAVG で、expression にある値すべての平均値を返すことを指定します。キーワードが指定されていない場合は、これが既定になります。
DISTINCT オプションAVG で、値の一意なインスタンスのみの平均値を計算することを指定します。指定されていない場合、既定は ALL です。
expression 任意の有効な式。普通は、平均値算出の対象となるデータ値を含む列の名前を指定します。
概要
AVG 集約関数は、expression の値の平均値を返します。一般的に expression は、クエリで返される複数行の中のフィールド名 (または、フィールド名を 1 つ以上含む式) です。
AVG は、テーブルまたはビューを参照する SELECT クエリまたは SELECT サブクエリで使用できます。AVG は、一般のフィールド値とともに、SELECT リストや HAVING 節で使用できます。
AVG は、WHERE 節では使用できません。SELECT がサブクエリの場合を除いて、JOINON 節では、AVG を使用できません。
AVG で DISTINCT キーワードを使用すると、個別 (一意) の値を持つフィールドのみについて集約演算が実行されます。ALL キーワードはオプションです。既定では、すべての値の平均値が計算されます。
データ値
AVG は倍精度浮動小数点数を返します。既定では、集約関数は Display 値ではなく、Logical (内部) データ値を使用します。
通常、AVG は数値を含むフィールドまたは式に適用されます。型チェックは実行されないため、(ほとんど意味はありませんが) 非数値フィールドに対して実行できます。AVG では、空文字列 ('') のように数値でない値はゼロ (0) として扱われます。
データ・フィールドの NULL 値は、AVG 集約関数の値を取得する場合は無視されます。クエリから行が返されない場合や、すべての行のデータ・フィールド値が NULL の場合、AVG は NULL を返します。
現在のトランザクションで発生する変更
すべての集約関数と同様に、AVG も必ず、現在のトランザクションの分離レベルに関係なく、コミットされていない変更も含めてデータの現在の状態を返します。詳細は、"SET TRANSACTION" と "START TRANSACTION" を参照してください。
以下のクエリは、Sample.Employee データベースに記録されている全従業員の平均給与額をリストにします。クエリから返されたすべての行には同じ平均値が入っているので、このクエリは、平均給与額から成る 1 行のみを返します。結果の見やすさを考慮し、|| 演算子を使用して数値にドル記号を付加し、AS 節を使用して列にラベルを表示しています。
SELECT '$' || AVG(Salary) AS AverageSalary
     FROM Sample.Employee
以下のクエリは、平均給与額よりも給与額が多い従業員の名前、給与額、全従業員の平均給与額をリストにします。行は給与額の昇順でリストされます。平均給与額のフィールド値は、クエリで返されるすべての行で同じ値になります。
SELECT Name,Salary,AVG(Salary) AS AverageSalary
FROM Sample.Employee
HAVING Salary>AVG(Salary)
ORDER BY Salary
関連項目
COUNT SUM