2016-12-02 2 views
1

테이블의 일부 데이터 가중 평균 성숙도를 계산하려고합니다.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   $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)
1) 곱하기 CurrentUPB * LID위한 RemainingMonths = 1
2) 않도록 일치 각 행 WHERE SaleEventID = 1
3) SUM은 상기 계산 = $411,220,000.00는 SaleEventID = 1에 해당
4) SUM 모든 CurrentUPB을 $2,067,000.00 = B =
5) 다음에 분할 A/B = $198.95 내 WAM

인 17,451,515,

나는 나의 표에 나는 많은 대출을있을 것이라는 점을 고려할 필요가 각이 (기본 키 아님) 같은 SaleEventID

지금까지

내 쿼리 기인되지 않습니다 :

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. 도움을 주신 사례가 많습니다. 내가 제대로 질문을 이해한다면

+0

로아 나 무엇인가? – DVT

+0

방금 ​​입력 한 정보가 그리드에 정보를 입력했는지를 업데이트했습니다. – UserSN

+0

$ 411,220,000/$ 3,967,000 = $ 103.6602 wheres 198.95? – xQbert

답변

4

하고 WAIR은 아주 간단합니다. 생각 Excel에서 SUMPRODUCT()

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 
+0

와우. 너는 프로 야. – DVT

+0

굉장! 고마워요 John – UserSN

+0

@DVT 아니. 그냥 은행 업계에서 2, 수십 년을 보냈습니다 :) –

0

, 여기 WAM을 계산에 대한 답변

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