Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于共享ID查找收入';s、 SQL_Sql_Postgresql_Union - Fatal编程技术网

基于共享ID查找收入';s、 SQL

基于共享ID查找收入';s、 SQL,sql,postgresql,union,Sql,Postgresql,Union,我几乎不知道如何问这个问题,或者这在SQL中是否可行。我在一家销售公司工作,销售代表经常在“拆分代码”下相互共享帐户。我有一个表格记录了所有这些拆分代码和每个人的实际代表代码的支付率 Split_codes Split_code, Rep_code, Payout% 100 200 60% 100 201 40% 这意味着在split 100下,60%的业务将支付给rep 200,40%的业务将支付给rep 201 我的销售表相当通用,相

我几乎不知道如何问这个问题,或者这在SQL中是否可行。我在一家销售公司工作,销售代表经常在“拆分代码”下相互共享帐户。我有一个表格记录了所有这些拆分代码和每个人的实际代表代码的支付率

Split_codes
Split_code, Rep_code, Payout%
100         200       60%
100         201       40%
这意味着在split 100下,60%的业务将支付给rep 200,40%的业务将支付给rep 201

我的销售表相当通用,相关字段是“ID、收入等”,没有提到ID是拆分代码或普通代码

Revenue
ID,Revenue,date
100, $100,1/1/2020
200, $200,1/5/2020
201, $150,1/5/2020
205, $100,1/5/2020
我有第三个表,其中包含所有未拆分的Rep_代码

Rep_Codes
First,Last,RepCode,etc etc 
John, Smith, 200 , ABC,DE 
因此,很容易将Rep_代码表与Split_代码表链接起来,查看每个人何时获得什么以及他们的任何拆分的支付率。棘手的部分是,我不知道如何将拆分代码下报告的销售数字分配到SQL中所有者的rep_代码。我可以在任何脚本语言中通过多次查询我的SQL表和一些代码来实现这一点,以便根据每个Rep_代码的支出%手动将销售额相加,但是我可以在单个SQL查询中实现这一点吗?我现有的表是否支持这一点?我并不期待得到一个完整的答案,因为这部分内容是模糊的。但我需要帮助,弄清楚我应该如何处理这个问题。据我所知,每当我在Split_codes表中遇到一个ID时,我需要为每个Rep_codes创建额外的行,该ID基于Split_codes的信息计算出收入值

我的预期输出将采用sales表的格式。拆分代码不存在并分发给适当的人员。并按任何必要的日期段进行分组

ID, sum(Revenue)
200: $260
201: $190
205: $100

假设拆分仅在基本重复上,则可以使用
左联接
进行匹配和某些聚合:

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;

我完全不知道联合作为一个函数存在。这看起来很有希望。我需要做大量的编辑才能使其工作,因为我实际上有两个不同的收入表,需要按日期对其进行分组,但这会起作用。非常感谢。