SQL 查询:对值求和

Posted

技术标签:

【中文标题】SQL 查询:对值求和【英文标题】:SQL Query: sum the values 【发布时间】:2020-06-28 20:02:56 【问题描述】:

我有一个用户资料表:

**userid   attr**
jack       swimming
jack       fishing
maria      football
maria      fishing
maria      climbing

以及属性的值表(存在最新日期的值)

**attr       dateofvalue    value**
swimming     01.07.19       2
swimming     02.03.19       5 
swimming     02.02.19       0,5
fishing      01.05.19       3    
fishing      17.03.19       4
football     02.10.19       1,5
football     05.09.19       6
climbing     12.12.19       4
climbing     11.11.19       2,5

我想获得给定用户配置文件的总价值。 使用最新值计算用户配置文件的总值。 例如 ma​​ria = 8,5 (1,5 + 3 + 4)

中的用户配置文件的总价值

我已经尝试过了: 选择 u.userid, sum(a.value) 来自用户配置文件 u,属性 a 其中 u.attr = a.attr 和 u.userid = 'maria' 按 u.userid 分组;

但这不能正常工作...

【问题讨论】:

【参考方案1】:

您可以使用窗口函数来确定最近的值,然后进行聚合:

select up.userid, sum(a.value)
from (select a.*,
             row_number() over (partition by attr order by dateofvalue desc) as seqnum
      from attributes a
     ) a join
     userprofiles up
     on a.attr = up.attr and a.seqnum = 1
group by up.userid;

【讨论】:

以上是关于SQL 查询:对值求和的主要内容,如果未能解决你的问题,请参考以下文章

sql实现多字段求和并查询

sql对查询结果求和

TSQL - 我如何对绝对值以外的值求和

如何在SQL中对相邻行进行分组并对数据求和

Sql 查询比较和求和

Pandas:使用 .iloc 对多列求和,但也包括绝对值