在SQL过程中计算给定日期范围的百分比

时间:2019-01-23 08:05:13

标签: sql sql-server stored-procedures

表结构:

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),其中col = ABC和总行数

假设用户输入日期为2018年11月11日至2018年11月11日,则输出应为

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

1 个答案:

答案 0 :(得分:0)

您可以尝试以下操作。

 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 

Online Demo

注意:用实际的表名替换TEMP_TABLE