0

我想得到这个

1.选择所有[结果]!=成功的行

2.count每个唯一的[结果]

3.告诉我每个[结果]占所有[结果]的百分比

似乎前两个工作正常,但最后一列总是'0'

这是我的查询:

SELECT  [result] , COUNT( * ) AS Total,(
                                             COUNT( * ) / 
                                             ( 
                                              SELECT COUNT( * ) 
                                              FROM[my_table] 
                                             ) 
                                         ) * 100 AS  '%' 

                                         FROM [my_table]
                                            WHERE  ([result]!='Success') 
                                            GROUP BY  [result] 

这是结果:

在此处输入图像描述

坦克你们!

4

3 回答 3

1

您需要将数字转换为小数或浮点数,否则您将使用整数。

SELECT  [result] , COUNT( * ) AS Total,
      (1.0 * COUNT( * ) / ( 
           SELECT COUNT( * ) 
           FROM[my_table] 
           ) 
      ) * 100 AS  '%' 
FROM [my_table]
WHERE  ([result]!='Success') 
GROUP BY  [result] 
于 2014-03-05T09:08:23.070 回答
0

我会试试这个:

  select [result], count(1) over (partition by [result]), 
  (count(1) over (partition by [result]) * 100/count(*))
  FROM [my_table]
  WHERE  ([result]!='Success') 

我认为您的代码虽然有效,但我认为您需要 * 100 在除法之前,我认为您发现使用整数和值 < 1 存在问题,因此它舍入为 0。

于 2014-03-05T09:08:32.310 回答
0

应该这样做,只要第一个数字是浮点数,结果就会是浮点数

  SELECT [result] 
  ,COUNT(*) AS Total
  ,CAST((COUNT(*)AS FLOAT) / (SELECT COUNT(*) FROM [my_table])) AS '%' 
  FROM [my_table]
  WHERE  ([result]!='Success') 
  GROUP BY  [result] 
于 2014-03-05T10:23:03.713 回答