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
我想获得给定用户配置文件的总价值。 使用最新值计算用户配置文件的总值。 例如 maria = 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 查询:对值求和的主要内容,如果未能解决你的问题,请参考以下文章