首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL Server -如何计算实体数量达到总数的80%?

SQL Server -如何计算实体数量达到总数的80%?
EN

Stack Overflow用户
提问于 2019-02-06 01:31:21
回答 1查看 90关注 0票数 0

我有一个公司的列表,他们的行业和他们的年收入。

我需要按行业划分该榜单,并计算出每个行业需要多少家公司才能占该行业总收入的80%。

我可以运行分区,我可以计算出每个行业80%的收入,但我完全不知道如何计算出需要多少家公司才能达到80%。我唯一的想法是为每个行业列出一个列表,从高到低对收入进行排序,然后向下求和,直到我达到80%的数字。

这里有没有什么内置的函数或者聪明的方法可以帮到我?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2019-02-06 01:33:36

我会使用窗口函数:

代码语言:javascript
运行
复制
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()进行计算是最简单的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54540014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档