You need to enable JavaScript to run this app. PostgreSQL如何按关联表收入占比分摊成本至各国家渠道
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL如何按关联表收入占比分摊成本至各国家渠道

问题原因

你当前查询的错误出在LEFT JOIN的关联条件上:只关联了event_date日期字段,没有关联country国家字段,导致每个成本表的行都会匹配到同一日期下所有国家的收入占比记录,取MAX(t1.revenue_share)时自然永远拿到最大值0.6,无法匹配到对应国家的收入占比。
另外你写的按国家判断的CASE语句是完全冗余的,关联条件修正后可以直接删除。

修改后的查询语句

SELECT 
  c.event_date, 
  c.country, 
  c.channel,
  c.costs_per_day_per_country * r.revenue_share / COUNT(*) OVER (PARTITION BY c.event_date, c.country) AS costs
FROM costs c
LEFT JOIN revenue r 
  ON r.event_date = c.event_date 
  AND r.country = c.country
ORDER BY 1,2,3;

执行后即可得到你预期的分摊结果。


内容的提问来源于stack exchange,提问作者Michi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 22:54:04