我正在尝试改进一些查询性能,查询的结构如下:
select 'Total_amount',
(select SUM(Total) from dbo.Invoices i where i.BU = bun.BU),
case when (select SUM(Total) from dbo.Invoices i where i.BU = bun.BU) > 100000 then 'Good' else 'Not good' end
from dbo.BusinessUnits bun
Run Code Online (Sandbox Code Playgroud)
我知道这个例子可以使用连接来解决,但在我的真实查询中我需要子查询.您可能会注意到,我有两次相同的子查询,一个用于给出实际值,另一个用于计算状态.
有没有办法通过计算一次子查询来提高性能?
我在pandas中有一个类似于以下内容的数据框:
ApplicationId | Application Date | Account
1234 | 10/01/2018 | 12345
5678 | 10/30/2018 | 12345
9101 | 11/15/2018 | 12345
1213 | 10/01/2018 | 67891
1415 | 11/01/2018 | 67891
1617 | 10/01/2018 | 43210
Run Code Online (Sandbox Code Playgroud)
我需要自己加入数据框,以根据账户和申请日期获得"下一个申请日期".所以最终的结果应该是:
ApplicationId | Application Date | Account | Next Application Date
1234 | 10/01/2018 | 12345 | 10/30/2018
5678 | 10/30/2018 | 12345 | 11/15/2018
9101 | 11/15/2018 | 12345 | Nan
1213 | 10/01/2018 | 67891 | 11/01/2018
1415 | 11/01/2018 | …Run Code Online (Sandbox Code Playgroud)