2017-07-19 69 views

回答

0

像這樣的問題通常的解決方案是window functions

例如,爲了獲得一個書單,以及在商店副本的平均數量,您可以編寫一個查詢:

SELECT title, author, 
     avg(copies) OVER() AS copies_average 
FROM books; 

┌─────────────────────────────────┬─────────────────┬─────────────────────┐ 
│    title    │  author  │ copies_average │ 
├─────────────────────────────────┼─────────────────┼─────────────────────┤ 
│ The Art of Computer Programming │ Donald E. Knuth │ 72.0000000000000000 │ 
│ The Tao of Programming   │ Geoffrey Hames │ 72.0000000000000000 │ 
└─────────────────────────────────┴─────────────────┴─────────────────────┘ 
(2 rows) 

最後一列是相同的所有行,是平均值應用於完整的結果集(因爲我們使用了空的窗口定義)。

表格只被掃描一次。

你可以在你的函數A使用這樣的查詢,而不是有一個函數B可言。

+0

感謝您的回答。 我知道窗口functions.But對於我的問題它不是一個解決方案。 我爲A.創建一個表,然後爲B計算它。 –

相關問題