Contents
HAVING句
HAVING句は、グループの結果に表示されるフィルタ条件を指定することができます。
WHERE句は選択された列に条件を配置しますが、HAVING句はGROUP BY句によって作成されたグループに条件を配置します。
構文
次のコードブロックは、クエリ内のHAVING句の位置を示しています。
SELECT FROM WHERE GROUP BY HAVING ORDER BY
HAVING句は問合せのGROUP BY句の後に続ける必要があり、ORDER BY句が使用されている場合はORDER BY句の前にも必要です。次のコードブロックには、HAVING節を含むSELECT文の構文があります。
SELECT column1, column2 FROM table1, table2 WHERE [ conditions ] GROUP BY column1, column2 HAVING [ conditions ] ORDER BY column1, column2
例
次のレコードを持つCUSTOMERSテーブルを考えてみましょう。
+----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 1 | kodak | 32 | Ahmedabad | 2000.00 | | 2 | nikon | 25 | Delhi | 1500.00 | | 3 | suzuki | 23 | Kota | 2000.00 | | 4 | nissan | 25 | Mumbai | 6500.00 | | 5 | tometo | 27 | Bhopal | 8500.00 | | 6 | nakag | 22 | MP | 4500.00 | | 7 | toshiki | 24 | Indore | 10000.00 | +----+----------+-----+-----------+----------+
次の例は、年齢の順番を数える場合です。
SQL > SELECT ID, NAME, AGE, ADDRESS, SALARY FROM CUSTOMERS GROUP BY age HAVING COUNT(age) >= 2;
次の結果になります。
+ ---- + -------- + ----- + --------- + --------- + | ID | NAME | AGE | ADDRESS| SALARY | + ---- + -------- + ----- + --------- + --------- + | 2 | nikon | 25 | Delhi | 1500.00 + ---- + -------- + ----- + --------- + --------- +