Sqlite-having-clause
提供:Dev Guides
SQLite-HAVING句
HAVING句を使用すると、最終結果に表示されるグループ結果をフィルタリングする条件を指定できます。
WHERE句は選択した列に条件を配置しますが、HAVING句はGROUP BY句によって作成されたグループに条件を配置します。
構文
SELECTクエリでのHAVING句の位置は次のとおりです。
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
HAVING句は、クエリ内のGROUP BY句の後に指定する必要があり、使用する場合はORDER BY句の前にも指定する必要があります。 以下は、HAVING句を含むSELECTステートメントの構文です。
SELECT column1, column2
FROM table1, table2
WHERE [ conditions ]
GROUP BY column1, column2
HAVING [ conditions ]
ORDER BY column1, column2
例
次のレコードを持つCOMPANYテーブルを検討してください。
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
1 Paul 32 California 20000.0
2 Allen 25 Texas 15000.0
3 Teddy 23 Norway 20000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
6 Kim 22 South-Hall 45000.0
7 James 24 Houston 10000.0
8 Paul 24 Houston 20000.0
9 James 44 Norway 5000.0
10 James 45 Texas 5000.0
以下に例を示します。これは、名前カウントが2未満のレコードを表示します。
sqlite > SELECT *FROM COMPANY GROUP BY name HAVING count(name) < 2;
これにより、次の結果が生成されます。
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
2 Allen 25 Texas 15000
5 David 27 Texas 85000
6 Kim 22 South-Hall 45000
4 Mark 25 Rich-Mond 65000
3 Teddy 23 Norway 20000
以下に例を示します。名前のカウントが2より大きいレコードが表示されます。
sqlite > SELECT* FROM COMPANY GROUP BY name HAVING count(name) > 2;
これにより、次の結果が生成されます。
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
10 James 45 Texas 5000