我需要帮助找出有关此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
---------------------------------------------------------------------------
答案 0 :(得分:0)
您可以尝试这个。
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 /状态分组,然后对每个组计数多少个状态,并在表中进行全部计数,然后根据这些值创建百分比。
WHERE子句仅显示FROM TODAY减去12个月,但是设置了开始日期过滤器,因此该月从第1天开始,而不是从今天起的12个月,例如27天。
如果您要将其更改为从今天起12个月。会是:
WHERE CreatedDate BETWEEN DATEADD(MONTH, -12, GETDATE()) AND GETDATE()