次の方法で共有


集計クエリで列を操作する (Visual Database Tools)

適用対象:SQL Server

集計クエリを作成すると、 クエリおよびビュー デザイナー ツール (Visual Database Tools) は、有効なクエリを構築できるように特定の前提条件を設定します。 たとえば、集計クエリを作成し、データ列に出力のマークを付ける場合、クエリおよびビュー デザイナーは、集計内の個々の行の内容を誤って表示しないように、 GROUP BY 句の列の一部を自動的に作成します。

グループ化を使用する

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

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

    特定の列を GROUP BY 句の一部にしたくない場合は、[抽出条件] ウィンドウの [グループ化] 列で別のオプションを選択して手動で変更する必要があります。 ただし、クエリおよびビュー デザイナーでは、クエリが実行されない可能性があるオプションを選択できません。

  • 抽出条件ペインまたは SQL ペインの集計関数にクエリ出力列を手動で追加した場合、クエリおよびビュー デザイナーはクエリから他の出力列を自動的に削除しません。 そのため、クエリ出力から残りの列を削除するか、 GROUP BY 句または集計関数の一部にする必要があります。

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

  • グリッドの [グループ化 ] 列が表示されない場合 (集計クエリをまだ指定していないため)、検索条件は 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 句の一部である必要があります。