百分比变化 returns 错误结果

Percent change returns wrong result

我已经在这里待了大约 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

这一行returns225000.

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

这一行returns25000.

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 returns 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)