【发布时间】:2019-03-20 04:22:36
【问题描述】:
我有一个很大的问题,因为我正在尝试这样做:
[编辑]:根据@gordon-linoff 的评论,我用一些具体的例子重塑了我的问题
我必须加入两个表 Sales 和 Quota。 餐桌销售:
+---------+---------+---------+---------+---------+---------+
| Country | Year | Store | Manager | Vendor | Customer|
+---------+---------+---------+---------+---------+---------+
| MX | 2018 |Cid. Mex.| Orlando | Luiz | 001 |
| MX | 2018 |Cid. Mex.| Orlando | Fabio | 002 |
| MX | 2018 |Cid. Mex.| Orlando | Luiz | 003 |
| MX | 2018 |Cid. Mex.| Orlando | Juan | 004 |
| MX | 2018 |Cid. Mex.| Orlando | Juan | 005 |
| MX | 2018 |Cid. Mex.| Javier |Hernandez| 007 |
...
还有配额:
+---------+---------+---------+---------+---------+---------+------------+
| Country | Year | Store | Manager | Vendor | Customer| Target |
+---------+---------+---------+---------+---------+---------+------------+
| MX | 2018 |Cid. Mex.| Orlando | Luiz | 001 | 1,01 |
| MX | 2018 |Cid. Mex.| Orlando | Fabio | | 2,00 |
| MX | 2018 |Cid. Mex.| Orlando | Luiz | | 3,05 |
| MX | 2018 |Cid. Mex.| Orlando | Juan | 004 | 2,71 |
| MX | 2018 |Cid. Mex.| Orlando | | | 14,25 |
| MX | 2018 |Cid. Mex.| | | | 16,1 |
...
最后我想要这样的东西: (销售加入配额):
| SALES FIELDS || QUOTA |
+---------+---------+---------+---------+---------+---------++------------+
| Country | Year | Store | Manager | Vendor | Customer|| Target |
+---------+---------+---------+---------+---------+---------++------------+
| MX | 2018 |Cid. Mex | Orlando | Luiz | 001 || 1,01 | *1
| MX | 2018 |Cid. Mex | Orlando | Fabio | 002 || 2,00 | *2
| MX | 2018 |Cid. Mex | Orlando | Luiz | 003 || 3,05 | *3
| MX | 2018 |Cid. Mex | Orlando | Juan | 004 || 2,71 | *4
| MX | 2018 |Cid. Mex | Orlando | Juan | 004 || 14,25 | *5
| MX | 2018 |Cid. Mex | Javier |Hernandez| 004 || 16,1 | *6
...
解释我正在寻找的结果:
- 作为两个表中的“关键”国家+年份+商店+经理+供应商+客户匹配,我从表“配额”中带来了“目标”。
- 在此示例中,为供应商 Fabio 定义了一个销售配额,无论客户是谁,因此在 Fabio 出现的每一行中(在同一国家、同一年、同一商店和同一经理,作为“键”),必须出现他的配额。
- 在这个例子中,我们看到为 Luiz 定义了一个配额(正如为 Fabio 定义的一个配额),但是这次 Luiz 有一个客户 001 的配额,正如我们在示例 (1) 中看到的,但是客户 001 Luiz 是一个大客户,并且有一个特定的配额,对于所有其他客户来说,Luiz 有一个更开放的配额。
- 同例(1)
- 在此示例中,我们看到所有供应商的配额的“默认”值。由于 Luiz、Fabio、Juan e Hernandez 有自己的配额,因此这些值不会改变。
- 这里我们对配额的“默认”值有相同的概念,但这次的级别高于上一个示例。
我觉得现在更清楚了,但如果还有什么不明白的地方,请告诉我。
请帮助我的人。
在此先感谢您。
【问题讨论】:
-
你的问题不清楚。滚动浏览一堆列试图弄清楚你的意思是理解你想要做什么的一大障碍。
-
查看sales表我们看到你最后显示的三行都是一样的。他们与第四个配额行完美匹配。那么为什么我们会在结果中看到这个/这些销售行具有三个不同的目标?我不明白这里适用什么规则。
-
请阅读How to Ask 并采取行动(尤其是关于家庭作业),点击谷歌搜索“stackexhange 家庭作业”和向下投票箭头鼠标悬停文本。请展示一些有理由的工作,解释你遇到的第一个地方并提出一个具体的问题。现在你只是要求我们为你做你的工作。 PS请阅读并采取行动minimal reproducible example。表明你的程序在通过(子)表达式时计算出你期望的结果,方法是说出那是什么,并表明它实际上是通过增量输出来完成的。当您添加更多让您感到困惑的内容时,请询问差异。
-
@ThorstenKettner,我修好了。所以第 4 个示例与第一个相同,但第 5 个示例只有 4 个字段匹配,但由于我们没有任何“更长”键,这是应用的规则。这同样适用于第 6 个示例,但要高一级。我尝试使用一些嵌套查询和 CTE 查询,但从现在开始我被困在这个问题上几天。
标签: sql postgresql join aggregation