SQL Server 2012:加权平均计算
我试图计算表中某些数据的加权平均到期日SQL Server 2012:加权平均计算,sql,sql-server,tsql,sql-server-2012,Sql,Sql Server,Tsql,Sql Server 2012,我试图计算表中某些数据的加权平均到期日 SaleEventID LID(PK) CurrentUPB Interest Rate RemainingMonths 1 1 $100,000.00 6.100% 11.00 1 2 $67,000.00 6.200% 360.00 1 3
SaleEventID LID(PK) CurrentUPB Interest Rate RemainingMonths
1 1 $100,000.00 6.100% 11.00
1 2 $67,000.00 6.200% 360.00
1 3 $1,400,000.00 6.300% 240.00
1 4 $500,000.00 7.000% 100.00
2 5 $1,400,000.00 7.100% 240.00
2 6 $500,000.00 7.000% 100.00
所以我想实现的公式是WAM:
对于LID=1,1乘以CurrentUPB*RemainingMonths
2对SaleEventID=1的每一行执行此操作
3上述计算的总和=411220000.00美元=A
4求所有当前UPB之和,其中SaleEventID=1等于$2067000.00=B
5然后除以A/B=$198.95,这是我的WAM
我需要考虑的是,在我的表中,我将有很多贷款,并且每个贷款都不会归咎于相同的SaleEvEnd值,而不是主键。
到目前为止,我的问题是:
SELECT l.*, A / B FROM AS WAM
FROM ( SELECT LSX_DC_Loans l
(SELECT CurrentUPB * RemainingMonths FROM l WHERE LID = 1
) AS A
(SELECT SUM (CurrentUPB) CurrentUPB FROM LSX_DC_Loans
WHERE SaleEventID = 1
) AS B
FROM l
) l
我不知道如何执行步骤2和步骤4。非常感谢您的帮助和示例。如果我正确理解您的问题,以下是答案
SELECT
l.*
, l1.A / l2.B AS WAM
FROM
LXC_DC_Loans l
CROSS APPLY (SELECT SUM(CurrentUPB * RemainingMonths) AS A FROM LSX_DC_Loans WHERE SaleEventID=l.SaleEventID) l1
CROSS APPLY (SELECT SUM(CurrentUPB) AS B A FROM LSX_DC_Loans WHERE SaleEventID=l.SaleEventID) l2
如果我没弄错你的问题,下面是答案
SELECT
l.*
, l1.A / l2.B AS WAM
FROM
LXC_DC_Loans l
CROSS APPLY (SELECT SUM(CurrentUPB * RemainingMonths) AS A FROM LSX_DC_Loans WHERE SaleEventID=l.SaleEventID) l1
CROSS APPLY (SELECT SUM(CurrentUPB) AS B A FROM LSX_DC_Loans WHERE SaleEventID=l.SaleEventID) l2
计算WAM和WAIR非常简单。用Excel思考产品
Declare @YourTable table (SaleEventID int,LID int,CurrentUPB money,[Interest Rate] money,RemainingMonths money)
Insert Into @YourTable values
(1,1,100000.00,6.100, 11.00),
(1,2,67000.00,6.200, 360.00),
(1,3,1400000.00,6.300, 240.00),
(1,4,500000.00,7.000, 100.00),
(2,5,1400000.00,7.100, 240.00),
(2,6,500000.00,7.000,100.00)
Select SaleEventID
,UPB = sum(CurrentUPB)
,WAM = sum(CurrentUPB*RemainingMonths)/sum(CurrentUPB)
,WAIR = sum(CurrentUPB*[Interest Rate] )/sum(CurrentUPB)
From @YourTable
Where SaleEventID = @Event
Group By SaleEventID
返回
SaleEventID UPB WAM WAIR
1 2067000.00 198.9453 6.4564
2 1900000.00 203.1578 7.0736
计算WAM和WAIR非常简单。用Excel思考产品
Declare @YourTable table (SaleEventID int,LID int,CurrentUPB money,[Interest Rate] money,RemainingMonths money)
Insert Into @YourTable values
(1,1,100000.00,6.100, 11.00),
(1,2,67000.00,6.200, 360.00),
(1,3,1400000.00,6.300, 240.00),
(1,4,500000.00,7.000, 100.00),
(2,5,1400000.00,7.100, 240.00),
(2,6,500000.00,7.000,100.00)
Select SaleEventID
,UPB = sum(CurrentUPB)
,WAM = sum(CurrentUPB*RemainingMonths)/sum(CurrentUPB)
,WAIR = sum(CurrentUPB*[Interest Rate] )/sum(CurrentUPB)
From @YourTable
Where SaleEventID = @Event
Group By SaleEventID
返回
SaleEventID UPB WAM WAIR
1 2067000.00 198.9453 6.4564
2 1900000.00 203.1578 7.0736
什么是LoanA?刚刚更新的问题没有在网格中键入信息。$411220000/$3967000=$103.6602 198.95从何而来?抱歉@xQbert从我的excel中抓到了这一点。有两行额外的值是$411220000.00/$2067000.00=198.95。我已经更新了问题,以防有人遇到此问题。LoanA是什么?刚刚更新问题没有在网格中键入信息。$411220000/$3967000=$103.6602 198.95是从哪里来的?抱歉@xQbert从我的excel中抓到了这一点。有两行额外的值是$411220000.00/$2067000.00=198.95。我已经更新了问题,以防有人碰到这个。哇。你是个职业选手,太棒了!非常感谢。John@DVT不。刚刚在银行业工作了几十年:John,我怎样才能添加WHERE子句来将SaleEventID传递到查询中。我计划在一个网站上使用它,并从querystring中提取SaleEventID。@AlexP请参阅更新的answerWow。你是个职业选手,太棒了!非常感谢。John@DVT不。刚刚在银行业工作了几十年:John,我怎样才能添加WHERE子句来将SaleEventID传递到查询中。我计划在一个网站上使用它,并从querystring中提取SaleEventID。@AlexP请参阅更新的答案