我有一个名为测试的下表:
Id | Value
---------------------------------------------
019D9E52-41D1-45DF-81B6-C7CC484115A7 | 1
262640CA-65C2-4E30-8654-E187ACA1EEF4 | 1
53710AFC-4E19-4B1C-B68B-CDB713EC3D62 | 2
8FF7E77C-D04C-4961-82D9-87C2E5A1A096 | 2
还有一个名为 TestView 的视图:
Value
------
1
2
3
这些只是伪代码示例。
现在,我想从测试表中选择所有值的百分比,以及 TestView 中的值是否不在测试 table我只想显示0。
这是预期的结果:
Value | Percentage
-------------------
1 | 50
2 | 50
3 | 0
答案 0 :(得分:2)
我想你想要:
select tv.value, count(t.id) * 1.0 / sum(count(t.id)) over () as ratio
from testview tv left join
test t
on tv.value = t.value
group by tv.value
order by tv.value;
注意:这给出了比率而不是百分比,因为我认为0到1之间的数字更有用。当然,您可以乘以100.0而不是1.0来得到0到100之间的范围。
答案 1 :(得分:0)
您可以通过以下方式获得百分比:
SELECT value,
100.0 * COUNT(*) -- count per bit
/ SUM(COUNT(*)) OVER () -- sum of those counts = count of all rows
As "Percentage"
FROM Test
GROUP BY value
如有任何疑问,请看一下:SQL Percentage of Occurrences