HAVING 子句 - Amazon Redshift

Amazon Redshift 自 2025 年 11 月 1 日起不再支援建立新的 Python UDF。如果您想要使用 Python UDF,請在該日期之前建立 UDF。現有 Python UDF 將繼續正常運作。如需詳細資訊,請參閱部落格文章

HAVING 子句

HAVING 子句會將條件套用至查詢傳回的中繼分組結果集。

語法

[ HAVING condition ]

例如,您可以限制 SUM 函數的結果:

having sum(pricepaid) >10000

HAVING 會在套用所有 WHERE 子句條件且完成 GROUP BY 操作之後套用。

條件本身會採用與任何 WHERE 子句條件相同的形式。

使用須知

  • HAVING 子句條件中參考的任何資料欄必須是分組資料欄,或是參考彙整函數結果的資料欄。

  • 在 HAVING 子句中,您無法指定:

    • 參考選取清單項目的序數。只有 GROUP BY 和 ORDER BY 子句接受序數。

範例

以下查詢會依名稱計算售票總金額,然後消除總金額低於 800,000 USD 的活動。HAVING 條件會套用至選取清單中彙整函數的結果:sum(pricepaid)

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

以下查詢會計算類似的結果集。不過,在此情況下,HAVING 條件會套用至選取清單中未指定的彙整:sum(qtysold)。未銷售超過 2,000 張票的活動將從最終結果中消除。

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

以下查詢會依名稱計算售票總金額,然後消除總金額低於 800,000 USD 的活動。HAVING 條件會套用至使用別名 pp 代表 sum(pricepaid) 的選取清單中彙總函數的結果。

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