计算两个值之间的百分比

2024-01-16

我有两列保存数字,我试图计算它们之间的百分比差异并在另一列中显示结果,但结果似乎是错误的。

这是有问题的代码。

SELECT 
    GenPar.ParameterValue AS ClaimType,
    COUNT(Submitted.ClaimNumber) AS SubmittedClaims,
    COUNT(ApprovalProvision.ClaimNumber) AS ApprovedClaims,
    COUNT(Declined.ClaimNumber) AS DeclinedClaims,
    COUNT(Pending.ClaimNumber) AS PendingClaims,
    ISNULL(SUM(SubmittedSum.SumInsured),0) AS TotalSubmittedSumInsured,
    ISNULL(SUM(ApprovedSum.SumInsured),0) AS TotalApprovedSumInsured,
    ISNULL(SUM(RejectedSum.SumInsured),0) AS TotalRejectedSumInsured,
    ISNULL(SUM(PendingSum.SumInsured),0) AS TotalPendingSumInsured,
    --This column is to show the diff in %
    CASE WHEN COUNT(Submitted.ClaimNumber) <> 0 AND COUNT(ApprovalProvision.ClaimNumber) <> 0
         THEN (COUNT(ApprovalProvision.ClaimNumber),0) - (COUNT(Submitted.ClaimNumber),0)
              /COUNT(Submitted.ClaimNumber) * 100
         ELSE 0
         END

我需要的是显示“已提交的声明”和“已批准的声明”列之间的百分比差异。任何列或两者都可能包含零,也可能不包含零。

据我所知,它是: COUNT(Subscribed.ClaimNumber) - COUNT(ApprovalProvision.ClaimNumber) / COUNT(Subscribed.ClaimNumber) * 100。

我已经尝试过这个,它的作用的一个例子是,当 1 和 117 之间的差异减少 99.15% 时,它需要 1 和 117 并返回 17。另一个例子是 2 和 100。这只是返回 0,而差异是减少了 98%。

CASE WHEN COUNT(Submitted.ClaimNumber) <> 0 AND COUNT(ApprovalProvision.ClaimNumber) <> 0
         THEN (COUNT(ApprovalProvision.ClaimNumber),0) - (COUNT(Submitted.ClaimNumber),0)
              /COUNT(Submitted.ClaimNumber) * 100
         ELSE 0
         END

我检查了这个链接,这似乎就是我正在做的事情。

两个值之间的百分比差异 https://stackoverflow.com/questions/23637261/percentage-difference-between-two-values

我也尝试过这段代码:

NULLIF(COUNT(Submitted.ClaimNumber),0) - NULLIF(COUNT(ApprovalProvision.ClaimNumber),0) 
    / NULLIF(COUNT(Submitted.ClaimNumber),0) * 100

以 2 和 100 为例,当实际差异减少 98% 时,返回 -4998。

为了完成,Submitted.ClaimNumber 是这部分代码:

LEFT OUTER JOIN (SELECT * FROM Company.Schema.ClaimMain WHERE CurrentStatus=10)Submitted
ON Submitted.ClaimNumber = ClaimMain.ClaimNumber

ApprovalProvision.ClaimNumber 是这样的:

LEFT OUTER JOIN (SELECT * FROM Company.Schema.ClaimMain WHERE CurrentStatus=15)ApprovalProvision
ON ApprovalProvision.ClaimNumber = ClaimMain.ClaimNumber

理想情况下,该列也可以处理 0。因此,如果一个值为 0,另一个值为 X,则结果应返回 0,因为如果原始数字为 0,则无法计算百分比。如果原始值为 X,新值为 0,我应该显示减少100%。

这将在所有列中发生,但无需用其余列淹没页面,因为所有计算都将以相同的方式进行。

有人看到我做错了什么吗?


我不熟悉为什么你有 (x,0) 作为语法

但我看到你有

(COUNT(ApprovalProvision.ClaimNumber),0) - (COUNT(Submitted.ClaimNumber),0)
              /COUNT(Submitted.ClaimNumber) * 100

不应该是这样吗

( COUNT(ApprovalProvision.ClaimNumber) - COUNT(Submitted.ClaimNumber) )
              /COUNT(Submitted.ClaimNumber) * 100

看起来它会计算 ApprovalProvision.ClaimNumber - 100,因为 Submitted.claimnumber 除以 1 乘以 100 就是 100。

4900 这个数字听起来确实不错。让我们看下面的例子,你有2个苹果,然后你又得到了98个,得到了100个苹果。

增加 98% 意味着从 2 个苹果到 3.96 个苹果。

增加 100% 意味着从 2 个苹果最终得到 4 个苹果。增加 1000% 意味着从 2 个苹果到最后 22 个苹果。所以 4000% 意味着你最终得到 82 个苹果。 5000% 意味着从 2 个苹果到 102 个苹果。

(100-2)/2*100 = 98 / 2 = 49 * 100 = 4900,因此,如果您从 2 个苹果开始,达到 100 个,苹果的数量似乎会增加 4900%。

现在如果你翻转了 2 和 100,比如说从 100 开始,现在你有 2, (2-100)/100*100 = -98,因此苹果的变化为 -98%,即减少 98%。

希望这能解决您的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算两个值之间的百分比 的相关文章

随机推荐

  • Android 应用程序仅在发布 APK 时崩溃

    我有一个好奇的问题 我构建了一个在调试模式下运行良好的应用程序 直接调试我的手机并在手机上安装了调试 APK 但如果我使用发布构建 APK 该应用程序会在某一时刻崩溃 我发现应用程序在发布 APK 时崩溃 但我不知道为什么以及我能做什么 p
  • Passenger Standalone 在触摸 restart.txt 时不会重新启动

    我构建了一个小部署脚本 其工作方式与 Capistrano 类似 它将 Rails 应用程序检出到带时间戳的目录并设置current当一切顺利时链接到该链接 问题是 在触摸 tmp restart txt 时 什么也没有发生 我想知道这是否
  • 匹配两个列表之间的相似元素

    我是 python 新手 所以如果这是一个愚蠢的问题 我深表歉意 我有两个清单 L1 marvel audi mercedez honda and L2 marvel comics bmw mercedez benz audi 我想提取其中
  • 在 Windows 上安装 pyspark

    我可以做一个pip install pyspark在我的窗户上 当我尝试运行下面的示例脚本时 它告诉我我的SPARK HOME未设置 我还需要设置 SPARK HOME 吗 我该怎么做 我在网上提到的博客从 Spark 网站手动提取 Spa
  • 如何禁用 kubernetes 中 2 个不同命名空间中的 pod 之间的交叉通信

    我有 2 个命名空间和 1 个 Pod 每个命名空间中运行 1 个服务 Example Namespace 1 default Pod pod1 Service pod1service Namespace 2 test Pod pod1 S
  • 将时间戳与续集查询中的日期进行比较

    I have createdAt将值存储为的列 2018 11 07 15 03 16 532 00 我想写这样的查询select from table name where createdAt input date 我的input dat
  • 如何在柱形图中隐藏零值

    我正在使用柱形图并将这些值显示在每个条形的顶部 如果值为 0 我不想显示这些值 该怎么做 这是我的代码 var series data dataLabels enabled true color black align right x 3
  • 随机状态代码:连接到 lambda 的 AWS api 网关出现 502 错误

    我使用代理集成通过 api 网关公开了多个 lambda 有时我会收到状态代码 502 的奇怪错误 lambda 云监视日志中没有任何内容 下面我发布了示例请求的 API 网关日志 0cbbd9f5 f1bd 11e7 92c0 4d5d3
  • Android Studio模拟器参数

    Android studio 使用这样的命令行启动模拟器 Users sergey Library Android sdk tools emulator avd Nexus 5 API 22 x86 netspeed full netdel
  • GUI 屏幕转换在 qml 中如何工作

    我是一名 C 开发人员 现在正在研究在 QtQuick 中使用 QML 进行 GUI 开发 在 GUI 创建过程中 用户只能看到一个屏幕 并根据用户交互来切换屏幕 但背后究竟发生了什么 有很多信息仅涉及如何设计单个屏幕 但有关如何管理其状态
  • 设置 1000 到 10.00 之间数字的格式

    我想将 1000 格式化为 10 00 PHP number format 函数似乎对此不起作用 我努力了 amount2 number format cost 2 echo cost 有任何想法吗 有没有办法可以操作 number for
  • C# 垃圾收集器交叉引用

    垃圾收集器是否会为交叉引用的对象 类释放资源 该对象 类不再从主程序中引用 例如 class class1 class2 m RefClass2 class class2 class1 m RefClass1 class class3 pu
  • 如何用Python实现看门狗定时器?

    我想用 Python 实现一个简单的看门狗定时器 有两个用例 看门狗确保函数的执行时间不会超过x seconds 看门狗确保某些定期执行的函数确实至少执行y seconds 我怎么做 只是发布我自己的解决方案 from threading
  • 从另一台机器访问 Mac OS X 上的 Jenkins

    我想从路由器和互联网后面到达詹金斯 非常简单的设置 互联网 gt 路由器 gt Mac gt Jenkins 已知项目 从路由器上 我可以看到机器的内部 IP 我将其称为 X X X X 然后是Jenkins中的Jenkins URL位置配
  • 无法删除对象“dbo.Table1”,因为它由 FOREIGN KEY 约束引用

    即使我正在删除并尝试删除表 我也会收到错误 ALTER TABLE dbo Table1 DROP CONSTRAINT FK Table1 Table2 GO DROP TABLE dbo Table1 GO Error 消息 3726
  • C# 小数舍入不一致吗?

    我一直在与来自 SQL Decimal 38 30 的 C 中的小数精度作斗争 最终我终于将其实现了四舍五入的奇怪效果 我知道我可能忽略了这里显而易见的事情 但我需要一点洞察力 我遇到的问题是 C 无法产生我认为一致的输出 decimal
  • C和C++中return 0有什么意义? [复制]

    这个问题在这里已经有答案了 我需要最简单的答案 我在各个网站上查找了答案 如果程序的输入导致输出为 10 则命令 return 0 是否会强制程序返回值 0 而不是 10 我在 Borland IDE 上编写了简单的 C 程序 没有返回 0
  • 指针是否被视为 C 中通过引用调用的方法?

    在我大学的 C 编程课上 教授和她随后写的书使用了这个术语调用或通过引用传递当提到pointers in C 我的教授认为 通过引用调用函数 的示例 int sum int a int b 我的教授认为 按值调用函数 的一个示例 int s
  • 使用 Envoy 在网络之间建立隧道

    对于混合云用例 我们正在研究 EnvoyProxy 是否适合作为跨本地防火墙移动数据的解决方案 预期的设置如下 应用程序 A 位于本地网络中 没有直接出站或入站 Internet 连接 App B 位于云端 Envoy代理 PC 放置在云端
  • 计算两个值之间的百分比

    我有两列保存数字 我试图计算它们之间的百分比差异并在另一列中显示结果 但结果似乎是错误的 这是有问题的代码 SELECT GenPar ParameterValue AS ClaimType COUNT Submitted ClaimNum