我公司的名单,他们的行业,他们的年收入。
我需要划分行业的列表,并在每个花费占行业总收入的80%,行业弄清楚有多少公司。
我可以运行分区,我可以找出各行业的收入的80%,但我零知道如何计算出需要多少企业打80%。我唯一的想法就是拉列表每个行业,营业收入排序,前高后低,总结下来,直到我打了80%的数量。
是否有任何内置函数或方法巧妙,可以帮助我在这里?
谢谢!
我会用窗函数:
select industry, count(*)
from (select t.*,
sum(revenue) over (partition by industry order by revenue desc) as running_revenue,
sum(revenue) over (partition by industry) as total_revenue
from t
) t
where running_revenue - revenue < 0.8 * total_revenue
group by industry;
该where
包括所有的公司都到那个经过80%的阈值第一。
还有其他功能,如ntile()
和percentile()
可以使用的。我觉得最简单的做计算,直接使用sum()
。