显示 table 中值的百分比 - 即使是缺失值
Display percentage of values in the table - even of missing values
我有一个名为 Test 的关注 table:
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
这些只是伪代码示例。
现在,我想要 select 来自 Test table 的所有值的百分比,如果来自 TestView 的值不在测试中table我只想显示0.
这是预期的结果:
Value | Percentage
-------------------
1 | 50
2 | 50
3 | 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
如有疑问,请看这个:
我想你想要:
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 的范围。
我有一个名为 Test 的关注 table:
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
这些只是伪代码示例。
现在,我想要 select 来自 Test table 的所有值的百分比,如果来自 TestView 的值不在测试中table我只想显示0.
这是预期的结果:
Value | Percentage
-------------------
1 | 50
2 | 50
3 | 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
如有疑问,请看这个:
我想你想要:
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 的范围。