Я пишу следующий запрос, чтобы рассчитать уровень продаж по месяцам, и я хочу убедиться, что он всегда смотрит на интервал: с 1 по конец месяца, за последние 12 месяцев. Я пробовал следующее, но я не уверен, что это займет 1-е и последнее число месяца, и я чувствую, что это может быть записано в более коротком запросе?
select
datetrunc('month',date)
,count(id) filter (where status='sold' and (date between (datetrunc('month','current_date - interval '1 months')) and datetrunc('month', current_date) - Interval '1 days'))
/ count(id) filter (where date between (datetrunc('month','current_date - interval '1 months')) and datetrunc('month', current_date) - Interval '1 days') as Mar2020_Sales_Rate
,..... as Feb2020_Sales_Rate
,.
,.
,..... as Mar2019_Sales_Rate
from sales
group by 1;