Microsoft Access Club > Access一日一見 >このページ >次頁 <前項  サイト内検索


Avg関数とDAvg関数…



集計クエリの演算フィールドの式には、DAvg関数または Avg 関数を使うことができます。domain のすべてのレコードの平均値を求める場合は、Avg関数を使います。

  • DAvg関数ではデータをグループ化する前に値が計算されます。
  • Avg関数ではデータをグループ化してから値が計算されます。
集計クエリ
テーブルのフィールドの値について、平均や合計などの計算結果を表示するクエリ。集計クエリは独立した種類のクエリではなく、選択クエリの機能を拡張したものです。

DAvg関数

指定されたレコードのセット (定義域) に含まれる値の平均を返します。Visual Basic コード、マクロ、クエリ式、または演算コントロールで使うことができます。

たとえば、運送料に関する選択クエリの [抽出条件] セルに DAvg 関数を指定して、運送料が平均値以上のレコードを抽出したり、演算コントロールの式に DAvg 関数を指定して、新規受注と以前の受注の平均値を並べて表示したりできます。

基本構文
DAvg(expr, domain, [criteria])

DAvg 関数には、次の引数があります。

引数 内容
expr 対象となる数値データが含まれているフィールドを表す文字列式、またはフィールドの値の計算を表す式です。
expr には、テーブルのフィールド名、フォームのコントロール、定数、組み込み関数、およびユーザー定義関数が指定できます。
ただし、他の定義域集計関数や SQL 集計関数を expr に指定することはできません。
domain 定義域を構成するレコードを指定する文字列式です。パラメータを必要としないクエリには、テーブル名またはクエリ名が指定できます。
criteria この引数は省略可能です。DAvg 関数の演算対象となるデータの範囲を指定する文字列式です。
たとえば、criteria には SQL 式の WHERE 句を指定できます (語 WHERE は省略します)。
引数 criteria の指定を省略すると、DAvg 関数は定義域全体に対して expr を適用します。
criteria に含まれるフィールドが domain のフィールドでない場合、DAvg 関数は Null 値を返します。
 解説

Null 値が入ったレコードは、計算対象になりません。

  • DAvg 関数を使って、クエリの [抽出条件] セルに抽出条件を指定できます。
  • たとえば、受注量が平均よりも多い商品の一覧を表示する場合、[受注明細] および [商品] テーブルに関するクエリを作成して [商品名] および [数量] フィールドを加え、以下の式を [数量] フィールドの下の [抽出条件] セルに記述します。
>DAvg("[数量]", "受注明細")

クエリの演算フィールドの式や、更新クエリの [レコードの更新] 行でも DAvg 関数を使うことができます。

  • 抽出条件を指定して DAvg 関数の対象データ範囲を制限する必要があるような場合は、DAvg 関数を使ってください。
  • たとえば、演算コントロールで愛知県に出荷したときの平均運送料を表示するには、テキスト ボックスの "ControlSource/コントロールソース" プロパティに次のように設定します。
=DAvg("[運送料]", "受注", "[出荷先都道府県] = '愛知県'")
  • モジュール、マクロ、またはフォームの演算コントロールで DAvg 関数を使うと、基になるレコード ソースにないフィールドをフォームに表示することができます。
  • たとえば、[受注] テーブルに基づくフォームに、特定の得意先から受注した商品数の平均を、DAvg 関数を使って [受注明細] テーブルの [数量] フィールドの値から計算し、表示することができます。
留意事項
  • 演算コントロールで DAvg 関数を使う場合は、新しいレコードに移動するたびにコントロールの値が再計算されないように、コントロールをフォームのヘッダーやフッターに配置することができます。
  • expr のデータ型が数値の場合、DAvg 関数は倍精度浮動小数点型 (Double) の値を返します。演算コントロールで DAvg 関数を使う場合は、処理を高速に実行するために型変換関数を使ってください。
  • DAvg 関数を使って外部キー側のテーブルのフィールドの平均値を求めることもできますが、必要なフィールドをすべて含んだクエリを作成し、そのクエリに基づいてフォームやレポートを作成する方が効率的です。
  • domain のレコードを変更しても、保存されていない値は DAvg 関数の演算に反映されません。
  • 変更した値を使って計算する場合は、計算前に、[レコード] メニューの [レコードの保存] をクリックするか、フォーカスを別のレコードに移動するか、または Update メソッドを使って変更を保存する必要があります。

 使用例

次の例では、指定した日付以降に出荷された受注の平均運送料が返されます。

  • 定義域は [受注] テーブルです。引数 criteria に指定した出荷先と出荷日に基づくレコードが演算の対象になります。
  • 引数 criteria に複数のフィールドを指定する場合は、キーワード AND で区切ります。
  • DAvg 関数の演算に含まれるすべてのレコードは、この両方の抽出条件に適合しています。
Function AvgCost(ByVal strCountry As String, ByVal dteShipDate As Date) As Double

    AvgCost = DAvg("[運送料]", "受注", "[出荷先都道府県] = '" & strCountry & _
                    "'AND [出荷日] >= #" & dteShipDate & "#")

End Function

この関数を呼び出すには、直前のウィンドウで次のコード行を使います。

AvgCost ("愛知県", #1/1/96#)
ID 性別 金額
1 ¥55,454
2 ¥6,895
3 ¥120,221
4 ¥90,320
5 ¥8,744
6 ¥9,896
7 ¥96,516
8 ¥9,600
9 ¥228,804
11 ¥78,110

テーブル名 tbl_sample には、上記のデータが格納されているものとします。そして、性別が「女」であるレコードの金額の平均を求めてみましょう。

 Avg関数の利用例

下記のようにクエリを用います。

 

 DAvg関数の利用例

DAvg関数の場合は、プロシージャ内でも対応が可能です。

Function SampleDAvg()

    MsgBox "平均額は" & DAvg("[金額]", "tbl_sample", "[性別]= '女'")

End Function

このプロシージャを実行すると、下記のメッセージが表示されます。

※Accessヘルプから引用しています。

2003/01/28

 

ページの先頭へ 前ページへ戻る


Avg関数とDAvg関数…


-Microsoft Access Club-

年額2,400円でドメインネームサーバーをご用意します。自宅サーバ構築時にご利用下さい。自宅サーバーは応用範囲が広いです。
年額2,400円でドメインネームサーバー。
自社・自宅サーバ構築時にご利用下さい。
やはり、自前サーバーは応用範囲が広いです。