Получение суммы последних записей с другим идентификатором столбца - PullRequest
1 голос
/ 20 апреля 2020

У меня есть таблица со следующей структурой:

-----------------------------
|id|value|category|timestamp|
|1 |100  |1       |10       |
|2 |200  |1       |20       |
|3 |100  |2       |30       |
-----------------------------

Как я могу получить СУММУ последних значений различных категорий? Так что в этом случае я хотел бы получить СУММ строк 2 и 3

1 Ответ

1 голос
/ 20 апреля 2020

Один метод использует коррелированный подзапрос:

select sum(t.value)
from t
where t.timestamp = (select max(t2.timestamp)
                     from t t2
                     where t2.category = t.category
                    );

При индексе (category, timestamp) это, вероятно, самый быстрый метод. Но вы также можете использовать оконные функции:

select sum(t.value)
from (select t.*,
             row_number() over (partition by category order by timestamp desc) as seqnum
      from t
     ) t
where seqnum = 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...