SQL HAVING 文言
- 前のページ SQL Group By
- 次のページ SQL ucase()
HAVING 子句
WHERE キーワードは集計関数と一緒に使用できないため、SQLにHAVING子句を追加する理由があります。
SQL HAVING 文法
SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name HAVING aggregate_function(column_name) operator value
SQL HAVING 例
以下の"Orders"テーブルがあります:
O_Id | OrderDate | OrderPrice | Customer |
---|---|---|---|
1 | 2008/12/29 | 1000 | Bush |
2 | 2008/11/23 | 1600 | Carter |
3 | 2008/10/05 | 700 | Bush |
4 | 2008/09/28 | 300 | Bush |
5 | 2008/08/06 | 2000 | Adams |
6 | 2008/07/21 | 100 | Carter |
今度は、注文合計金額が2000未満の顧客を検索したいです。
以下のSQL文を使用します:
SELECT Customer,SUM(OrderPrice) FROM Orders GROUP BY Customer HAVING SUM(OrderPrice)<2000
結果セットは以下のようになります:
Customer | SUM(OrderPrice) |
---|---|
Carter | 1700 |
今度は、"Bush"または"Adams"の顧客が1500を超える注文合計金額を持つことを検索したいです。
SQL 文に通常の WHERE 子句を追加しました:
SELECT Customer,SUM(OrderPrice) FROM Orders WHERE Customer='Bush' OR Customer='Adams' GROUP BY Customer HAVING SUM(OrderPrice)>1500
結果セット:
Customer | SUM(OrderPrice) |
---|---|
Bush | 2000 |
Adams | 2000 |
- 前のページ SQL Group By
- 次のページ SQL ucase()