HAVING 句は、クエリが返すローを制限します。HAVING 句は、WHERE 句が SELECT 句の条件を設定するのと同じような方法で、GROUP BY 句の条件を設定します。
HAVING 句の探索条件は、WHERE 探索条件と同じです。ただし、WHERE 探索条件では集合関数を指定できません。たとえば次の使用方法は有効です。
HAVING AVG( UnitPrice ) > 20 |
次の使用方法は無効です。
WHERE AVG( UnitPrice ) > 20 |
次の文は、集合関数を持つ HAVING 句を使用する簡単な例です。
2 種類以上のサイズまたは色がある製品をリストするには、1 種類だけの製品を含むグループは省き、Products テーブルのローを名前でグループ化するクエリが必要です。
SELECT Name FROM Products GROUP BY Name HAVING COUNT( * ) > 1; |
Name |
---|
Tee Shirt |
Baseball Cap |
Visor |
Sweatshirt |
HAVING 句に集合関数を使用できる場合については、集合関数を使用できる場所を参照してください。
HAVING 句は、集合関数がなくても使用できます。
次のクエリは、製品をグループ化し、その結果セットを name が B で始まるグループだけに限定します。
SELECT Name FROM Products GROUP BY Name HAVING Name LIKE 'B%'; |
Name |
---|
Baseball Cap |
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 |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |