指定した列の値の平均値を返す集約関数です。
Synopsis
AVG([ALL | DISTINCT] expression)
引数
ALL AVG で、expression にある値すべての平均値を返すことを指定します。キーワードが指定されていない場合は、これが既定になります。
DISTINCT AVG で、値の一意なインスタンスのみの平均値を計算することを指定します。
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 を返します。
以下のクエリは、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
SELECT DISTINCT AVG(NULL) AS NullVal,
AVG('') AS EmpStrVal,
AVG('   ') AS BlankVal,
AVG(0) AS ZeroVal
FROM Sample.Person
   &sql(SELECT DISTINCT AVG(NULL),
       AVG(''),
       AVG('    ')
     INTO :a,:b,:c
     FROM Sample.Person)
    WRITE !,"SQLCODE=",SQLCODE
    WRITE !,"NullVal=",a," Length=",$LENGTH(a)
    WRITE !,"StrVal=",b," Length=",$LENGTH(b)
    WRITE !,"BlankVal=",c," Length=",$LENGTH(c)
関連項目
COUNT SUM