SQL格式的百分比

时间:2016-08-27 17:18:46

标签: sql sql-server

使用SQL代码

select table.column, count(*) * 100.0 / sum(count(*)) over()
from table
group by table.column

我想使用此功能来提高效率,因为我正在处理大型数据库。该函数生成两个百分比值,总和为100.我无法找出一种简单的方法来仅生成真值(1)或总数与列中行数的值。有一种简单的方法可以做到这一点,还是我需要完全使用不同的功能?

示例数据集将是

N,  Bit  
0 | 0  
1 | 0  
2 | 1  
3 | 0  
4 | 0  
5 | 1  

这是一个空位表,我正在考虑真位的百分比。 N代表数字。

2 个答案:

答案 0 :(得分:1)

如果您只需知道真位的百分比,请执行以下操作:

string

如果你需要通过其他列知道真实位的百分比(在这种情况下为N),你需要这样的东西:

SELECT COUNT(NULLIF(Bit, 0)) / CONVERT(Decimal, COUNT(*))
FROM Table

答案 1 :(得分:0)

使用SUM来计算True Bits。

SELECT
    group_column,
    100.0 * SUM(CASE WHEN bit_column<>0 THEN 1 ELSE 0 END) / COUNT(*) AS p
FROM myTable
GROUP BY group_column