百分比变化返回错误的结果



我已经在这里待了大约 2 个小时。我正在尝试计算两个金额之间的百分比变化。这是当前代码。

RejectedVsSubmittedSum = ((CASE WHEN COUNT(ClaimMain.ClaimNumber) > 0 THEN SUM(PCover.SumAssured) END
-ISNULL(SUM(CASE ClaimMain.CurrentStatus WHEN 25 THEN PCover.SumAssured END),0))
/NULLIF(SUM(CASE ClaimMain.CurrentStatus WHEN 25 THEN PCover.SumAssured END),0))
* 100

此行返回 225000。

CASE WHEN COUNT(ClaimMain.ClaimNumber) > 0 THEN SUM(PCover.SumAssured) END

此行返回 25000。

ISNULL(SUM(CASE ClaimMain.CurrentStatus WHEN 25 THEN PCover.SumAssured END),0)

师。

NULLIF(SUM(CASE ClaimMain.CurrentStatus WHEN 25 THEN PCover.SumAssured END),0)

然后我乘以 100。

所以 225000 - 25000/25000 * 100 返回800。这就是我要返回的内容,但基于这个网站 http://www.percent-change.com/index.php?y1=225000&y2=25000,我的结果是错误的,我应该返回 -88.88888888 %。

我在SQL中进行这些计算没有任何实际经验,因此我认为该网站是正确的。谁能看出我是否真的做错了什么?

我已经问过这个 计算两个值之间的百分比,但现在我使用的是一组不同的数字,我现在使用的是金额,而不仅仅是计数。我尝试使用相同的逻辑(因为这样做是有意义的(,但似乎我返回了错误的结果。

根据公式((y2 - y1) / y1)*100,您的查询应该是这样的。

RejectedVsSubmittedSum = ( ( (ISNULL(SUM(CASE ClaimMain.CurrentStatus WHEN 25 THEN PCover.SumAssured END),0) ) 
- (CASE WHEN COUNT(ClaimMain.ClaimNumber) > 0 THEN SUM(PCover.SumAssured) END) ) 
/ (CASE WHEN COUNT(ClaimMain.ClaimNumber) > 0 THEN SUM(PCover.SumAssured) END) ) * 100

y1: CASE WHEN COUNT(ClaimMain.ClaimNumber) > 0 THEN SUM(PCover.SumAssured) END
y2: ISNULL(SUM(CASE ClaimMain.CurrentStatus WHEN 25 THEN PCover.SumAssured END),0)

最新更新