我使用PostgreSQL
,我有以下情況:是否可以在相同的查詢中創建和使用窗口函數?
Sales
(短版):
表stock
itemid quantity
5 10
5 12
6 1
(短版):
itemid stock
5 30
6 1
我有一個複雜的查詢,也需要在其中的一列中顯示每個itemid
的SUM
。
所以這將是:
Select other things,itemid,stock, SUM (quantity) OVER (PARTITION BY itemid) AS total_sales
from .....
sales
stock
該查詢確定。然而,這個查詢將呈現:
itemid stock total_sales
5 30 22
6 1 1
但我並不需要看到itemid=6
因爲整個股票被出售。這意味着我需要一個WHERE
條件,如:
WHERE total_sales<stock
,但我不能這樣做,因爲total_sales
是WHERE
後創建完成。
有沒有辦法解決這個問題,而沒有圍繞整個查詢與另一個?如果可以的話,我儘量避免。
使用派生表(也就是你所說的「*周圍的查詢與另一個*」的技術術語)是隻有這樣解決這個問題。你爲什麼要避免它? –
這只是我的問題的一個簡單的例子......在我的情況下,我有4列依賴於其他窗口函數的結果...所以它將是4派生表... – John
我不明白爲什麼會這樣做四個派生表 - 只有一個(或CTE)有四個別名。您應該發佈**完整**查詢。 –