You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PARTITION BY子句计算YTD时按年重置聚合的问题

解决按年度重置的YTD Revenue计算问题

你的问题出在分区条件没包含年份,原SQL只按国家对分区,导致累计收入会跨年度持续累加,不会每年重置。要实现每年单独累计,需要在分区里加上date_move对应的年份。

修正后的SQL示例

根据你使用的数据库类型,提取年份的函数略有不同,以下是主流数据库的写法:

通用版(适用于PostgreSQL、Oracle等)

SELECT 
    sender_country,
    receiver_country,
    date_move,
    revenue,
    SUM(revenue) OVER (
        PARTITION BY sender_country, receiver_country, EXTRACT(YEAR FROM date_move)
        ORDER BY date_move
    ) AS YTD_Revenue
FROM your_table;

MySQL/SQL Server版

SELECT 
    sender_country,
    receiver_country,
    date_move,
    revenue,
    SUM(revenue) OVER (
        PARTITION BY sender_country, receiver_country, YEAR(date_move)
        ORDER BY date_move
    ) AS YTD_Revenue
FROM your_table;

逻辑说明

  • PARTITION BY sender_country, receiver_country, 年份:将数据按「发送国-接收国-年份」分成独立分组,每个分组内的累计计算不会跨组
  • ORDER BY date_move:确保每个分组内按日期顺序累加,得到真正的「年初至今」累计值

这样就能实现加拿大-尼日利亚2016年累计到5.08,2017年从0开始重新累计到10.24的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 17:06:00