SQL服务器 - 如何计算实体#命中总数的80%?

问题描述 投票:0回答:1

我公司的名单,他们的行业,他们的年收入。

我需要划分行业的列表,并在每个花费占行业总收入的80%,行业弄清楚有多少公司。

我可以运行分区,我可以找出各行业的收入的80%,但我零知道如何计算出需要多少企业打80%。我唯一的想法就是拉列表每个行业,营业收入排序,前高后低,总结下来,直到我打了80%的数量。

是否有任何内置函数或方法巧妙,可以帮助我在这里?

谢谢!

sql sql-server percentage
1个回答
3
投票

我会用窗函数:

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()

© www.soinside.com 2019 - 2024. All rights reserved.