1.选择[result]!= Success
的所有行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]
这是结果:
坦克你们!
答案 0 :(得分: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]
答案 1 :(得分: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。
答案 2 :(得分: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]