賦值子查詢 - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

賦值子查詢

賦值子查詢是括號中的正規 SELECT 查詢,只會傳回一個值 (一列和一個資料欄)。運行此查詢後,傳回的值會在外層的查詢中使用。如果子查詢傳回 0 列,則子查詢表達式的值為 null。如果子查詢傳回超過一列,Amazon Redshift 會傳回錯誤。子查詢可以參照父查詢傳來的變數,此變數會在子查詢的任何一次叫用期間中,做為常數使用。

您可以在叫用表達式的大多數陳述式中,使用賦值子查詢。賦值子查詢在下列的情況中並非有效的表達式:

  • 做為表達式的預設值

  • 在 GROUP BY 和 HAVING 子句中

範例

下列的子查詢會針對 2008 年一整年,計算出每次銷售平均支付的價格,外層的查詢接著會使用輸出中的此值,來比較每季的銷售平均價格:

select qtr, avg(pricepaid) as avg_saleprice_per_qtr, (select avg(pricepaid) from sales join date on sales.dateid=date.dateid where year = 2008) as avg_saleprice_yearly from sales join date on sales.dateid=date.dateid where year = 2008 group by qtr order by qtr; qtr | avg_saleprice_per_qtr | avg_saleprice_yearly -------+-----------------------+---------------------- 1 | 647.64 | 642.28 2 | 646.86 | 642.28 3 | 636.79 | 642.28 4 | 638.26 | 642.28 (4 rows)