次の方法で共有


集計クエリで列を使って作業する

更新 : 2007 年 11 月

集計クエリを作成する場合、クエリおよびビュー デザイナ ツールは有効なクエリを構築できるように一定の前提を設けます。たとえば、集計クエリを作成するときに、あるデータ列を出力するように指定した場合、その列は自動的に GROUP BY 句の一部になり、集約値の個別の行の内容が誤って表示されることを防ぎます。

GROUP BY の使用

クエリおよびビュー デザイナは、次のガイドラインに従って列を処理します。

  • [グループ化] オプションを選択したり、クエリに集計関数を追加したりすると、出力が指定されている列または並べ替えの対象となる列はすべて、自動的に GROUP BY 句に追加されます。列が既に集計関数の一部になっている場合は、自動的に GROUP BY 句に追加されることはありません。

    特定の列を GROUP BY 句に含めないようにするには、抽出条件ペインの [グループ化] 列で別のオプションを選択し、手動で変更する必要があります。ただし、オプションを選択した結果、クエリが実行できなくなる場合もあります。クエリおよびビュー デザイナでは、これが回避されません。

  • 抽出条件ペインまたは SQL ペインで集計関数にクエリ出力列を手動で追加した場合でも、他の出力列がクエリから自動的に削除されることはありません。したがって、残りの列をクエリ出力から削除するか、GROUP BY 句または集計関数の一部にする必要があります。

抽出条件ペインの [フィルタ] 列に検索条件を入力すると、クエリおよびビュー デザイナは次の規則に従います。

  • 集計クエリを指定していないためにグリッドの [グループ化] 列が表示されていない場合、検索条件は WHERE 句に配置されます。

  • 既に集計クエリを指定していて、[グループ化] 列の [Where 条件] オプションを選択している場合、検索条件は WHERE 句に配置されます。

  • [グループ化] 列に [Where 条件] 以外の値が指定されている場合、検索条件は HAVING 句に配置されます。

HAVING 句と WHERE 句の使用

次の原則は、検索条件で集計クエリの列を参照する方法を説明したものです。通常、検索条件に列を使用すると、集約する行にフィルタを適用したり (WHERE 句)、最終出力に表示されるグループ化の結果を決定したり (HAVING 句) できます。

  • 個別のデータ列は、クエリ内のほかの場所で使われている方法によって、WHERE 句または HAVING 句に含めることができます。

  • WHERE 句は、集計およびグループ化する行のサブセットを選択するために使用されます。このため、適用はグループ化の前に行われます。したがって、データ列が GROUP BY 句の一部でない、または集計関数に含まれていない場合でも、WHERE 句で使用できます。たとえば、次のステートメントでは、価格が $10.00 を超えるすべての書名を選択し、平均価格を計算します。

    SELECT AVG(price)
    FROM titles
    WHERE price > 10
    
  • GROUP BY 句または集計関数でも使われている列を含む検索条件を作成する場合、その検索条件は WHERE 句または HAVING 句として表示されます。どちらの句が表示されるかはその条件の作成時に決定されます。たとえば、次のステートメントでは、出版社ごとに本の平均価格を計算し、$10.00 を超える出版社の平均価格を表示します。

    SELECT pub_id, AVG(price)
    FROM titles
    GROUP BY pub_id
    HAVING (AVG(price) > 10)
    
  • 検索条件の中で集計関数を使う場合、条件に集計を含むことになるため、HAVING 句の一部であることが必要です。

参照

その他の技術情報

クエリ結果の集計

クエリ結果の並べ替えおよびグループ化