【问题标题】:SQL Query: sum the valuesSQL 查询:对值求和
【发布时间】: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 分组;

但这不能正常工作...

【问题讨论】:

    标签: sql oracle


    【解决方案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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-04
      • 1970-01-01
      • 2016-04-10
      • 2018-05-06
      • 1970-01-01
      相关资源
      最近更新 更多