我正在尝试获取一组特定值所具有的行的百分比。最好用例子来解释。我可以非常简单地使用 ratio-to-report 函数和 over() 对每一列执行此操作,但我遇到了多个分组的问题
假设表有 2 列:
column a column b
1000 some data
1100 some data
2000 some data
1400 some data
1500 some data
通过以下查询,我可以得到这个域集,每个是总行数的 20%
select columna, count(*), trunc(ratio_to_report(count(columna)) over() * 100, 2) as perc
from table
group by columna
order by perc desc;
但是,我需要的是例如确定包含 1000、1400 或 2000 的行的百分比和计数;通过查看它,您可以知道它的 60%,但需要查询才能返回。这需要高效,因为查询将针对数百万行运行。就像我之前说的,我对单个值及其百分比进行了处理,但是让我感到困惑的是倍数。
似乎我需要能够在某处放置一个 IN 子句,但这些值不会每次都是这些特定值。如果有意义的话,我需要从另一个表中获取它的“IN”部分的值。我想我需要某种多重分组。