考虑一个简单的 group by 查询:
select foo, count(*)
from mytable where bar=10
group by foo
Run Code Online (Sandbox Code Playgroud)
这将返回一个具有以下形式的表:
foo | count
----+------
a | 100
b | 200
c | 300
Run Code Online (Sandbox Code Playgroud)
我的目标是使用单个查询获得下表:
foo | count | ratio
----+-------+-------
a | 200 | 18.2
b | 300 | 27.3
c | 600 | 54.5
Run Code Online (Sandbox Code Playgroud)
在实践中,我有更多可能的值,foo
因此这里的答案没有帮助。此外,并不是将比率四舍五入并乘以 100。
这样做的最佳做法是什么?
听起来你想要这样的东西:
select foo, count(*),
count(*) * 100.0 / sum(count(*)) over () as ratio
from mytable
where bar = 10
group by foo;
Run Code Online (Sandbox Code Playgroud)
这并不能保证四舍五入时该值加起来正好是 100%。这是一个更棘手的问题,通常在应用程序层处理得更好。这确实会使用浮点数产生“正确”的答案。
归档时间: |
|
查看次数: |
2184 次 |
最近记录: |