根据共享 ID 查找收入,SQL
Finding revenue based on shared ID's, SQL
我几乎不知道如何问这个问题,或者在 SQL 中是否可行。我在一家销售公司工作,销售代表经常在 "Split Codes" 下彼此共享帐户。我有一个 table 记录所有这些拆分代码和每个人的实际代表代码的支付率。
Split_codes
Split_code, Rep_code, Payout%
100 200 60%
100 201 40%
这意味着拆分 100 下的任何业务的 60% 支付给代表 200,40% 支付给代表 201。
我的销售 table 相当通用,相关字段是 "ID,Revenue, etc ,etc",没有提到 ID 是拆分代码还是普通代码。
Revenue
ID,Revenue,date
100, 0,1/1/2020
200, 0,1/5/2020
201, 0,1/5/2020
205, 0,1/5/2020
我有第三个 table,所有 Rep_codes 都不是拆分
Rep_Codes
First,Last,RepCode,etc etc
John, Smith, 200 , ABC,DE
所以很容易 link Rep_Code table 和 Split_Code table 看看每个人什么时候得到什么和支付率对于他们的任何分裂。棘手的部分是我不知道如何将拆分代码下报告的销售数字分配给 SQL 中其所有者的 rep_codes。我可以在任何脚本语言中通过多次查询我的 SQL table 和一些代码来根据每个 Rep_code 的支付百分比手动添加销售额,但是可以我在单个 SQL 查询中执行此操作?我现有的 table 甚至支持这个吗?我不期待一个完整的答案,因为部分内容含糊不清。但我需要帮助弄清楚我应该如何解决这个问题。据我所知,每次我遇到 Split_codes table 中的 ID 时,我都需要为每个 Rep_code 创建额外的行,并根据 [=] 的信息计算收入值35=]??????
我的预期输出将采用销售额 table 的格式。拆分代码不存在并分发给适当的人。并按任何必要的日期期间分组。
ID, sum(Revenue)
200: 0
201: 0
205: 0
假设拆分仅基于基础代表,那么 left join
可用于匹配和一些聚合:
select coalesce(sc.rep_code, r.id) as repcode,
rc.first, rc.last, sum(r.revenue * coalesce(sc.payout, 1))
from revenue r left join
split_codes sc
on r.id = sc.split_code left join
rep_codes rc
on rc.repcode = coalesce(sc.rep_code, r.id)
group by coalesce(sc.rep_code, r.id), rc.first, rc.last;
我几乎不知道如何问这个问题,或者在 SQL 中是否可行。我在一家销售公司工作,销售代表经常在 "Split Codes" 下彼此共享帐户。我有一个 table 记录所有这些拆分代码和每个人的实际代表代码的支付率。
Split_codes
Split_code, Rep_code, Payout%
100 200 60%
100 201 40%
这意味着拆分 100 下的任何业务的 60% 支付给代表 200,40% 支付给代表 201。
我的销售 table 相当通用,相关字段是 "ID,Revenue, etc ,etc",没有提到 ID 是拆分代码还是普通代码。
Revenue
ID,Revenue,date
100, 0,1/1/2020
200, 0,1/5/2020
201, 0,1/5/2020
205, 0,1/5/2020
我有第三个 table,所有 Rep_codes 都不是拆分
Rep_Codes
First,Last,RepCode,etc etc
John, Smith, 200 , ABC,DE
所以很容易 link Rep_Code table 和 Split_Code table 看看每个人什么时候得到什么和支付率对于他们的任何分裂。棘手的部分是我不知道如何将拆分代码下报告的销售数字分配给 SQL 中其所有者的 rep_codes。我可以在任何脚本语言中通过多次查询我的 SQL table 和一些代码来根据每个 Rep_code 的支付百分比手动添加销售额,但是可以我在单个 SQL 查询中执行此操作?我现有的 table 甚至支持这个吗?我不期待一个完整的答案,因为部分内容含糊不清。但我需要帮助弄清楚我应该如何解决这个问题。据我所知,每次我遇到 Split_codes table 中的 ID 时,我都需要为每个 Rep_code 创建额外的行,并根据 [=] 的信息计算收入值35=]??????
我的预期输出将采用销售额 table 的格式。拆分代码不存在并分发给适当的人。并按任何必要的日期期间分组。
ID, sum(Revenue)
200: 0
201: 0
205: 0
假设拆分仅基于基础代表,那么 left join
可用于匹配和一些聚合:
select coalesce(sc.rep_code, r.id) as repcode,
rc.first, rc.last, sum(r.revenue * coalesce(sc.payout, 1))
from revenue r left join
split_codes sc
on r.id = sc.split_code left join
rep_codes rc
on rc.repcode = coalesce(sc.rep_code, r.id)
group by coalesce(sc.rep_code, r.id), rc.first, rc.last;