繁体   English   中英

计算sql程序中给定日期范围的百分比

[英]Calculate percentage for a given date range in sql procedure

表结构:

Col1  col2  col3 col4
1     ABC   q    03-11-2018   
2     ABC   q    03-11-2018
3     ABC   q    03-11-2018
4     PBC   q    03-11-2018
5     ABC   q    04-11-2018
6     ABC   q    04-11-2018
7     ABC   q    05-11-2018

预期 O/P:通过以下公式计算百分比 count(col2) where col=ABC & total rows count

假设用户给出的日期在 03-11-2018 到 05-11-2018 之间,那么输出应该是

col1  col2   col3
3     3      100%
2     2      100%
1     1      100%

您可以尝试如下。

 DECLARE @StartDate DATE='03-11-2018' 
 DECLARE @EndDate DATE = '05-11-2018'; 

;WITH cte AS
      (SELECT Count(*) col1, 
                col4 
         FROM   temp_table 
         WHERE  col2 = 'ABC' 
         GROUP  BY col4) 
SELECT col1, 
       col2, 
       Str(col1 * 100.0/col2, 12, 2) + '%' AS Col3 
FROM   cte c 
       CROSS apply (SELECT Count(*) col2 
                    FROM   temp_table T 
                    WHERE  C.col4 = T.col4)TOT 
WHERE  C.col4 BETWEEN @StartDate AND @EndDate 

在线演示

注意:将TEMP_TABLE替换为您的实际表名。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM