Postgres рассчитывает на основе месяца и года - PullRequest
0 голосов
/ 07 января 2020

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

Points
id (SERIAL) | user(INTEGER) | time_of_point(TIMESTAMP) | title (TEXT)

Я хочу получить список баллов пользователей, который показывает их баллы за текущий месяц, текущий год и время жизни.

Я немного растерялся, как это сделать. Как будет выглядеть запрос?

Финальная таблица должна выглядеть следующим образом

User | Points (this month) | Points (this year) | Lifetime Points
1    |     5               |     10             |     216
2    |     7               |     14             |     125
3    |    15               |    140             |     325

1 Ответ

1 голос
/ 07 января 2020

Как насчет условной агрегации?

select user,
       sum(points) filter (where date_trunc('month', time_of_point) = date_trunc('month', now()) as this_month,
       sum(points) filter (where date_trunc('year', time_of_point) = date_trunc('year', now()) as this_year,
       sum(points) as lifetime
from t
group by user;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...