使用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代表数字。
答案 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