メニュー
Amazon Redshift
データベース開発者ガイド (API Version 2012-12-01)

HAVING 句

HAVING 句は、クエリが返す中間グループ結果セットに条件を適用します。

構文

Copy
[ HAVING condition ]

例えば、SUM 関数の結果を制限できます。

Copy
having sum(pricepaid) >10000
HAVING 条件は、すべての WHERE 句条件が適用され、GROUP BY 演算が終了した後に適用されます。

条件自体は、WHERE 句の条件と同じ形式になります。

使用に関する注意事項

  • HAVING 句条件内で参照される列は、グループ化列または集計関数の結果を参照する列のいずれかでなければなりません。

  • HAVING 句では、以下の項目を指定することはできません。

    • SELECT リストで定義されたエイリアス。エイリアスが使われていない元の式を繰り返してください。

    • SELECT リスト項目を参照する序数。序数が使用できるのは、GROUP BY 句または ORDER BY 句だけです。

次のクエリは、すべてのイベントに対するチケットの合計販売を名前別に計算し、販売合計が 800,000 ドルに達しなかったイベントを削除します。HAVING 条件は、SELECT リスト内の集計関数の結果に適用されます。sum(pricepaid))

Copy
select eventname, sum(pricepaid) from sales join event on sales.eventid = event.eventid group by 1 having sum(pricepaid) > 800000 order by 2 desc, 1; eventname | sum ------------------+----------- Mamma Mia! | 1135454.00 Spring Awakening | 972855.00 The Country Girl | 910563.00 Macbeth | 862580.00 Jersey Boys | 811877.00 Legally Blonde | 804583.00 (6 rows)

次のクエリは、同じような結果セットを計算します。ただしこの場合、SELECT リストで指定されていない集計に対して HAVING 条件が適用されます。sum(qtysold)2,000 枚を超えるチケットを販売しなかったイベントは、最終結果から削除されます。

Copy
select eventname, sum(pricepaid) from sales join event on sales.eventid = event.eventid group by 1 having sum(qtysold) >2000 order by 2 desc, 1; eventname | sum ------------------+----------- Mamma Mia! | 1135454.00 Spring Awakening | 972855.00 The Country Girl | 910563.00 Macbeth | 862580.00 Jersey Boys | 811877.00 Legally Blonde | 804583.00 Chicago | 790993.00 Spamalot | 714307.00 (8 rows)

このページの内容: