Как сравнить данные текущей недели с аналогичным периодом прошлого года - PullRequest
0 голосов
/ 11 октября 2019

Если я просматриваю данные за первые 10 дней месяца, как я могу также посмотреть данные за первые 10 дней предыдущего месяца?

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

Пример:

Сейчас 10/11, и я вижу данные Октября. Я бы посмотрел все с 10/1 до 10/11.

Затем я также хочу посмотреть, как выглядят данные с 9/1 до 9/11

Буду ли я использовать Интервал и/ или функции "date_trunc"?

Ответы [ 2 ]

0 голосов
/ 14 октября 2019

вот как я "взломал" его:

select x.now, count(x.status) as total
from
(
    select now(), date_trunc('month', now()) as start_of_month, now() - 
interval '1 month' as last_month
    , date_trunc('month', now() - interval '1 month') as 
start_of_last_month, status
    , created_date
    from my_table
)x
where x.created_date between x.start_of_month and x.now
group by x.now

UNION ALL

select x.last_month, count(x.status) as total
from
(
    select now(), date_trunc('month', now()) as start_of_month, now() - 
interval '1 month' as last_month
    , date_trunc('month', now() - interval '1 month') as 
start_of_last_month, status
    , created_date
    from my_table
)x
where x.created_date between x.start_of_last_month and x.last_month
group by x.last_month

Используя "UNION ALL" Я заменил "x.now" на «x.last_month» в выбранном и в предложении where временной интервал даты предложения, так что теперь у меня есть текущий месяц (где бы я ни находился в этом месяце) и то же самое для предыдущего месяца

0 голосов
/ 11 октября 2019

Да, вы можете использовать date_trunc, чтобы перейти к началу месяца, и вы можете вычесть интервал в 1 месяц, чтобы получить в прошлом месяце:

postgres=# select now(), date_trunc('month', now()) as start_of_month, now() - interval '1 month' as last_month, date_trunc('month', now() - interval '1 month') as start_of_last_month;
              now              |     start_of_month     |          last_month           |  start_of_last_month
-------------------------------+------------------------+-------------------------------+------------------------
 2019-10-11 18:57:22.385666+00 | 2019-10-01 00:00:00+00 | 2019-09-11 18:57:22.385666+00 | 2019-09-01 00:00:00+00
(1 row)

...