必要なのは、日付とトランザクション数を格納するテーブルだけです。
create table transactions_per_day (
transaction_date date primary key,
num_transactions integer not null check (num_transactions >= 0)
);
1か月および1年あたりのトランザクション数は、集計関数(SUM())とWHERE句を使用したクエリで実行できます。1か月あたりの合計。。。
select
extract(year from transaction_date) tr_year,
extract(month from transaction_date) tr_month,
sum(num_transactions) num_tr
from transactions_per_day
where transaction_date between '2013-01-01' and '2013-12-31'
group by tr_year, tr_month
order by tr_year, tr_month;
多くの場合、月間合計と年次合計のビューを作成することは理にかなっています。
create view transactions_per_month as
select
extract(year from transaction_date) tr_year,
extract(month from transaction_date) tr_month,
sum(num_transactions) num_tr
from transactions_per_day
where transaction_date between '2013-01-01' and '2013-12-31'
group by tr_year, tr_month
order by tr_year, tr_month;