百分比变化 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)
我已经在这里待了大约 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)