gpt4 book ai didi

sql - 想出算法 : Calculate full earnings for every company

转载 作者:搜寻专家 更新时间:2023-10-30 22:36:07 24 4
gpt4 key购买 nike

我有一个包含公司的 TreeView。每个公司都可以有子公司,每个子公司都可以有子公司,并且可以一直持续到无穷大。每家公司都有自己的 yield ,并且 FullEarnings 等于该公司所有子公司的总和。

如果已知每家公司的 yield ,我需要计算每家公司的 yield 。

例子:

CompanyName  | OwnEarnings | FullEarnings
-Company1 | 25K$ | 53K$
--Company2 | 13K$ | 18K$
---Company3 | 5K$
--Company4 | 10K$

我有一个数据库列 ParentID,它链接到 id parent company。

我该怎么做?也许通过递归?

最佳答案

不管怎样,您都需要递归地更新您的表格。

在您的情况下,它看起来像:

with C as
(
select T.Id,
T.Earnings,
T.Id as RootID
from T
union all
select T.Id,
T.Earnings,
C.RootID
from T
inner join C
on T.ParentId = C.Id
)
select T.Id,
T.ParentId,
T.CompanyName,
T.Earnings,
S.FullEarnings
from T
inner join (
select RootID,
sum(Earnings) as FullEarnings
from C
group by RootID
) as S
on T.Id = S.RootID
order by T.Id
option (maxrecursion 0);

SQL Fiddle example

为了更新,您需要使用 update 查询更改选择,如 SQL Fiddle example 所示。

关于sql - 想出算法 : Calculate full earnings for every company,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37369789/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com