Symfoware Server SQLビギナーズガイド - FUJITSU - |
目次 索引 |
第6章 いろいろなデータ操作の方法 | > 6.1 表をグループ化してデータを操作する |
表式では、FROM句に指定した表から、WHERE句を指定して処理対象の行を特定することができるように、GROUP BY句でグループ化した表から、処理対象のグループを特定することができます。それにはHAVING句を使用します。HAVING句の指定例を以下に示します。
例
“図:GROUP BY句で導出される表の例”のグループ表から、製品番号が2種類以上ある製品の、製品名と在庫数量の合計を求めます。
SELECT 製品名, SUM(在庫数量) FROM 在庫管理.在庫表 GROUP BY 製品名 HAVING COUNT(製品名) >= 2 (A) (1)(1) 探索条件
(A)〜(1) HAVING句HAVING句によって導出される表と、問合せ指定の結果を“図:HAVING句で導出される表の例”に示します。
注) 集合関数の結果の列には名前がありません。
HAVING句には、処理対象のグループを特定するための探索条件を指定します。条件とする列は、グループ化列か、集合関数で指定することが必要です。グループ化列でない列を集合関数以外で指定するとエラーになります。
なお、グループ化列を指定する条件はHAVING句ではなく、WHERE句でも指定できます。HAVING句はグループ化した表を対象にしますが、WHERE句はグループ化する前の段階で処理対象の行を特定するため、そのような条件はWHERE句に指定した方がSQL文の処理効率がよくなることがあります。例えば、上記の例の問合せ指定で、製品名が“テレビ”の行を導出する場合、“製品名 = N'テレビ'”という条件はWHERE句に指定します。
目次 索引 |