SQLiteHaving句
HAVING 句を使用すると、最終結果に表示されるグループ化された結果をフィルターするための条件を指定できます。
WHERE 句は選択した列に条件を設定し、HAVING 句は GROUP BY 句によって作成されたグループに条件を設定します。
構文
以下は、SELECT クエリ内の HAVING 句の位置です:
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
FROM
WHERE
GROUP BY
HAVING
ORDER BY
クエリでは、HAVING 句を次の場所に配置する必要があります。 GROUP BY 句は ORDER BY 句の前に配置する必要があります。 HAVING 句を含む SELECT ステートメントの構文は次のとおりです:
SELECT columns1, column2
FROM table1, table2
WHERE [条件]
GROUP BY column1, column2
HAVING [条件]
ORDER BY column1, column 2
FROM table1, table2
WHERE [条件]
GROUP BY column1, column2
HAVING [条件]
ORDER BY column1, column 2
例
COMPANY テーブルに次のレコードがあるとします。
ID NAME AGE ADDRESS SALARY
---------- ---------- -------- -- ---------- ----------
1 ポール 32 カリフォルニア 20000.0
2 アレン 25 テキサス 15000.0
3 テディ 23 ノルウェー 20000.0
4 マーク 25 リッチモンド 65000.0
5デビッド27テキサス85000.0
6キム22サウスホール45000.0
7ジェームズ24ヒューストン10000.0
8ポール24ヒューストン20000.0
9ジェームズ44ノルウェー5000.0
10ジェームス455000.0
---------- ---------- -------- -- ---------- ----------
1 ポール 32 カリフォルニア 20000.0
2 アレン 25 テキサス 15000.0
3 テディ 23 ノルウェー 20000.0
4 マーク 25 リッチモンド 65000.0
5デビッド27テキサス85000.0
6キム22サウスホール45000.0
7ジェームズ24ヒューストン10000.0
8ポール24ヒューストン20000.0
9ジェームズ44ノルウェー5000.0
10ジェームス455000.0
すべてのレコードを表示する例です。
sqlite > SELECT * FROM COMPANY GROUP BY name HAVING <2;結果 次の結果が生成されます:
IID NAME AGE Address Salary
これは、名前カウントが 2 より大きいすべてのレコードを表示する例です: --------------------------------- -------------------------------------------------- - ------ ----------
2 アレン 25 テキサス 15000
5 デビッド 27 テキサス 85000
6 キム 22 サウスホール 45000
4 マーク 25 リッチモンド 65000
3 テディ 23 ノルウェー20000
2 アレン 25 テキサス 15000
5 デビッド 27 テキサス 85000
6 キム 22 サウスホール 45000
4 マーク 25 リッチモンド 65000
3 テディ 23 ノルウェー20000
sqlite > SELECT * FROM COMPANY GROUP BY name HAVING count(name) > これにより、以下の結果:
ID 名前 年齢 住所 給与---------- ---------- ---------- ---------- ---------
10ジェームズ