SQL 汇总不会出现在最终结果中的记录

SQL sum records that wont appear in the final result

SQL 的新手,我有一个问题我不太能解决

表 1

ID   name          purchase_date   purchase_value  
---------------------------------------------------
 1   John Doe      01/01/2020             10  
 1   John Doe      30/01/2020             25  
 1   John Doe      20/02/2020             20  
 2   Santa Claus   01/01/2020             15  

我想做的事 – Select 来自 table1 的记录在设定的日期范围内(为了示例,可以说比 19/2/2020 最近),但我想显示记录的总支出,无论它们是否在范围

例如我要展示

ID  name       purchase_date   purchase_value   Total_Purchase_value  
---------------------------------------------------------------------
1   John Doe   20/02/2020             20                 55  

圣诞老人根本没有出现,因为他在日期范围内没有购买,我只看到 John Doe 在 19/2/2020 之后的购买记录,但总购买价值总和他的所有 3 笔交易

您可以使用 window 函数:

select t.*,
from (select t.*, sum(purchase_value) over (partition by id) as total
      from t
     ) t
where date >= '2020-02-19'

您可以使用 window 函数:

select *
from (
    select t.*, sum(purchase_value) over(partition by id) total_purchase_value
    from table1 t
) t
where purchase_date > date '2020-02-19'

在子查询中,window sum() 计算每个 id 的总购买金额。然后,外部查询过滤目标范围内的日期。

您没有说明您使用的是哪个数据库,因此这里使用日期文字的标准语法。您可能需要将其调整为您的数据库支持的语法。