如何对按ID取最新日期的不同ID对应的Value求和?
如何计算各ID最新日期对应Value的总和
表结构
ID Date Value ID1 01.01.2022 10 ID1 01.02.2022 10 ID1 01.03.2022 20 ID1 01.04.2022 30 ID2 01.01.2022 20
需求说明
需要计算每个ID最新日期对应的Value之和,预期结果为 50(ID1最新日期01.04.2022的Value30 + ID2的Value20)。
已有代码问题修正
你提供的SQL里,ORDER BY DATE ASC会取每个ID的最早日期记录,要获取最新日期的话,需要改成ORDER BY DATE DESC:
-- 修正后的筛选各ID最新记录的SQL SELECT ID, VALUE, DATE FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY ID ORDER BY DATE DESC) AS ROWNUM FROM "Table") X WHERE ROWNUM = 1
求和解决方案
在修正后的子查询外层嵌套SUM()聚合函数即可得到总和:
SELECT SUM(VALUE) AS TotalSum FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY ID ORDER BY DATE DESC) AS ROWNUM FROM "Table" ) X WHERE ROWNUM = 1
执行逻辑
- 内层子查询按
ID分组,每组内按Date倒序排列,给最新日期的记录分配ROWNUM=1 - 外层查询过滤出所有
ROWNUM=1的记录,对这些记录的Value字段求和
内容的提问来源于stack exchange,提问作者lifeofthenoobie
相关产品推荐
相关产品推荐

