SQL Запрос: сумма значений - PullRequest
1 голос
/ 17 марта 2020

У меня есть таблица userprofile:

**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

Я хочу получить общее количество значение данного пользовательского профиля. Общая стоимость userprofile рассчитывается с последними значениями. Например, общее значение userprofile от maria = 8,5 (1,5 + 3 + 4)

Я уже пробовал это: выберите u.userid, sum (a.value ) из userprofile u, атрибуты a, где u.attr = a.attr и u.userid = 'maria' группа от u.userid;

Но это не работает правильно ...

1 Ответ

0 голосов
/ 17 марта 2020

Вы можете использовать оконные функции, чтобы определить самое последнее значение, а затем агрегировать:

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...