Aij*_*han 10 sql sql-server postgresql window-functions
这是我的问题..
Actual Auction Ammanat id
7000 500 100 228,229
7000 100 100 228,229
7000 900 100 228,229
5000 0 0 230
Run Code Online (Sandbox Code Playgroud)
我想要下面给出的结果
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
Run Code Online (Sandbox Code Playgroud)
在这里,Remaining是(sum(auction)-actual).
我正在使用PostgreSQL.但是如果有人知道SQL Server中的解决方案,那就没问题了.
Ida*_*rye 16
你需要一个使用窗口函数 - http://www.postgresql.org/docs/9.3/static/tutorial-window.html
就像是:
(Sum(Auction) OVER ()) - actual AS Remaining
Run Code Online (Sandbox Code Playgroud)
Idan 100%正确.我想提供一个解释:
(SUM (Auction) OVER ())
Run Code Online (Sandbox Code Playgroud)
OVER ()创建一个窗口,其中包含原始查询中的所有行.SUM (Auction)是一个计算总和的窗口函数Auction.这是进一步的解释:
Window是查询结果集中用户指定的一组行.
窗口函数计算窗口中SUM所有行的值(例如).
所有行都在窗口中,因为OVER()不包括PARTITION BY.随着PARTITION BY窗口将包括行的子集.
... OVER子句定义查询结果集中的窗口或用户指定的行集.然后,窗口函数计算窗口中每行的值.您可以将OVER子句与函数一起使用来计算聚合值...如果OVER子句不包含PARTITION BY.这意味着该函数将应用于查询返回的所有行.