【发布时间】:2021-02-13 16:47:17
【问题描述】:
我有两个数据集:货件和账单。我不知道如何在 StackOverflow 上粘贴 csv 表的摘录,所以这里是图片。
发货
账单
我正在尝试运行一个窗口函数,该函数使用以下查询按 shipping.id 对所有实际金额求和:
SELECT
*
, sum(actual_amount) OVER
(PARTITION BY shipments.shipment_id) as costs
FROM shipments JOIN bills ON shipments.shipment_id = bills.shipment_id
当我运行此查询时,成本列显示的总和不正确:
costs 列只对每个 shipping_id 的最后两个 actual_amount 求和,并且没有正确求和。我觉得我在这里缺少一些基本的东西。我基本上是在尝试在 SQL 中创建一个 Excel SUMIF 函数,其中 actual_amount 是总和范围,shipment_id 是标准。
【问题讨论】:
-
总和总是需要一个分组依据,如果你省略它,那么它会汇总到详细级别
-
看起来您的分区正在聚合到 shipping_id 级别。它具有一对多的关系。只需使用 sum 和 group by 并删除分区
-
SELECT , sum(actual_amount) actual_amount FROM shipping JOIN bills ON shipping.shipment_id = bills.shipment_id group by shipping.shipment_id