SQL查找百分比

时间:2018-09-27 08:06:20

标签: sql sql-server

我需要帮助找出有关此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
---------------------------------------------------------------------------

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