des1roer
@des1roer
ученье - свет, а неученье - приятный полумрак

Postgres сумма за разные интервалы?

Возможно ли раелизовать следующее - одним запросом получать сумму и за текущий день и за текущий месяц?
select
  sum(value::real) as sum
FROM 
  analiz_data 
--and CURRENT_DATE =f_timestamp::date
--and to_char(current_timestamp, 'YYYY-MM') = to_char(f_timestamp, 'YYYY-MM')
  • Вопрос задан
  • 556 просмотров
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
Чуток вычислительной нагрузки:
select
sum(value) as month_sum,
sum(case when CURRENT_DATE =f_timestamp::date then value else 0 end) as today_sum
from ... where за этот месяц
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
можно, используйте over

UPD, поправил запрос, так корректнее
SELECT
    d.*,
    sum(d.day_sum) OVER (PARTITION BY date_trunc('month', d.f_timestamp)) as month_sum
FROM (
        SELECT
            f_timestamp::date,
            sum(value::real) as day_sum
        FROM analiz_data
        GROUP BY f_timestamp::date
    ) d
Ответ написан
Комментировать
des1roer
@des1roer Автор вопроса
ученье - свет, а неученье - приятный полумрак
select
sum(value::REAL) as month_sum,
sum(case when CURRENT_DATE =f_timestamp::date then value::REAL else 0 end) as today_sum
from analiz_data where to_char(current_timestamp, 'YYYY-MM') = to_char(f_timestamp, 'YYYY-MM')
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы