これが私の問題です。
Actual Auction Ammanat id
7000 500 100 228,229
7000 100 100 228,229
7000 900 100 228,229
5000 0 0 230
以下のような結果が欲しい
Actual Auction Ammanat Remaining id
7000 500 100 5550 228,229
7000 100 100 5550 228,229
7000 900 100 5550 228,229
5000 0 0 5000 230
ここで、Remaining
は(sum(auction)-actual)
。
PostgreSQLを使用しています。しかし、SQL Serverのソリューションを知っている人がいれば問題ありません。
ウィンドウ関数を使用するには-が必要です http://www.postgresql.org/docs/9.3/static/tutorial-window.html
何かのようなもの:
(Sum(Auction) OVER ()) - actual AS Remaining
Idanは100%正解です。これについて説明したいと思います。
_(SUM (Auction) OVER ())
_
OVER ()
は、元のクエリからすべての行を含むwindowを作成します。SUM (Auction)
は、Auction
の合計を計算するウィンドウ関数です。ここにさらに説明があります:
Windowは、クエリ結果セット内のユーザー指定の行のセットです。
Window関数は、ウィンドウ内のすべての行の値(例:SUM
)を計算します。
OVER()
には_PARTITION BY
_が含まれていないため、すべての行はウィンドウ内にあります。 _PARTITION BY
_を使用すると、ウィンドウに行のサブセットが含まれます。
MSDNから :
... OVER句は、クエリ結果セット内のウィンドウまたはユーザー指定の行セットを定義します。次に、ウィンドウ関数がウィンドウの各行の値を計算します。関数でOVER句を使用して、集計値を計算できます... OVER句にPARTITION BYが含まれていない場合。つまり、関数はクエリによって返されるすべての行に適用されます。