Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL の使用法 » データのクエリと変更 » クエリ結果の要約、グループ化、ソート

 

HAVING 句:データ・グループの選択

HAVING 句は、クエリが返すローを制限します。HAVING 句は、WHERE 句が SELECT 句の条件を設定するのと同じような方法で、GROUP BY 句の条件を設定します。

HAVING 句の探索条件は、WHERE 探索条件と同じです。ただし、WHERE 探索条件では集合関数を指定できません。たとえば次の使用方法は有効です。

HAVING AVG( UnitPrice ) > 20

次の使用方法は無効です。

WHERE AVG( UnitPrice ) > 20
集合関数を伴う HAVING の使用

次の文は、集合関数を持つ HAVING 句を使用する簡単な例です。

2 種類以上のサイズまたは色がある製品をリストするには、1 種類だけの製品を含むグループは省き、Products テーブルのローを名前でグループ化するクエリが必要です。

SELECT Name
   FROM Products
   GROUP BY Name
   HAVING COUNT( * ) > 1;
Name
Tee Shirt
Baseball Cap
Visor
Sweatshirt

HAVING 句に集合関数を使用できる場合については、集合関数を使用できる場所を参照してください。

集合関数を伴わない HAVING の使用

HAVING 句は、集合関数がなくても使用できます。

次のクエリは、製品をグループ化し、その結果セットを name が B で始まるグループだけに限定します。

SELECT Name
   FROM Products
   GROUP BY Name
   HAVING Name LIKE 'B%';
Name
Baseball Cap
HAVING における 2 つ以上の条件

HAVING 句では、2 つ以上の条件を指定できます。これらの条件は、次の例に示すように、AND、OR、NOT 演算子と組み合わされます。

2 種類以上のサイズまたは色があり、1 種類の単価が 10 ドルを超える製品をリストするには、1 種類だけの製品を含むグループと、単価の最大値が 10 ドル以下のグループを省き、Products テーブルのローを名前でグループ化するクエリが必要です。

SELECT Name
   FROM Products
   GROUP BY Name
   HAVING COUNT( * ) > 1
   AND MAX( UnitPrice ) > 10;
Name
Tee Shirt
Sweatshirt