sql - SQL 查找百分比
问题描述
我需要帮助找出这个 SQL 问题的查询 -
查找过去 12 个月中每个州(状态)在其 SLA 内每月处理的索赔百分比。
谢谢!
Id **l** ClaimID **l** StatusID **l** CreatedDate **l** CreatedBy
===========================================================================
1174 **l** 977 **l** 1 **l** 2018-06-01 18:01:31.387 **l** 1
---------------------------------------------------------------------------
1175 **l** 978 **l** 1 **l** 2018-06-01 18:01:31.387 **l** 1
---------------------------------------------------------------------------
1176 **l** 979 **l** 1 **l** 2018-06-01 18:01:31.387 **l** 1
---------------------------------------------------------------------------
1177 **l** 980 **l** 1 **l** 2018-06-01 18:01:31.403 **l** 1
---------------------------------------------------------------------------
1178 **l** 981 **l** 1 **l** 2018-06-01 18:01:31.403 **l** 1
---------------------------------------------------------------------------
解决方案
你可以试试这个。
SELECT
StatusID
,count(StatusID) AS CountOfGroupedStatusIDs
,sum(count(*)) OVER() AS TotalAmountOfItems
,100.00 * count(StatusID) / sum(count(*)) OVER() AS Perc
FROM Table
WHERE CreatedDate BETWEEN DATEADD(month, DATEDIFF(month, 0, DATEADD(MONTH, -12, GETDATE())), 0) AND GETDATE()
GROUP BY StatusID
它按 statusID/States 分组,然后计算每组有多少个状态,并对表中的所有状态进行计数,然后从这些值中创建一个百分比。
WHERE 子句只是说 FROM TODAY 减去 12 个月,但设置了开始日期过滤器,以便该月从第 1 天开始,而不是从今天开始的 12 个月,例如第 27 天。
如果您想将其更改为从今天开始的 12 个月。这将是:
WHERE CreatedDate BETWEEN DATEADD(MONTH, -12, GETDATE()) AND GETDATE()
推荐阅读
- flutter - 如何使用 CachedNetworkImage 在 Flutter 中实现重试?
- jquery - jQuery:如果div高于90vh,则将位置从固定更改为相对
- html - Flexbox,嵌套网格/子
- java - JPA UTC 时区查询谓词问题
- java - 尝试使用 base64 编码显示从服务器检索的图像但无法显示正确的图像
- javascript - Firebase onSnapshot 仅返回更改的项目
- macos - OSX 和 launchctl,rsync/ssh 找不到密钥
- python - Django 中的 TypeError:save() 得到了一个意外的关键字参数“force_insert”
- ada - Ada:在公共函数的前提条件中使用私有变量
- javascript - 提交句柄上状态更改的属性顺序