在数据库中的一个月内存储每个日期的数据

时间:2013-02-06 17:26:28

标签: database database-design

我正在创建一个程序,除了程序之外,它还提供统计信息。我想要添加的一件事是每天的交易数量,然后可能有一个折线图,显示交易如何按天(一个月内),然后按月,然后按年变化。我真的无法弄清楚如何将其转换为数据库,程序可以将数据拉入图表

会有什么样的东西,或者有什么我想念的东西:?

日表; (A.I)id,daynumber,dayofweek,numoftrans外键:monthnumber,yearnumber

月份表

(A.I)id,monthnumber,nameofmonth,numoftrans

年表

(A.I)id,yearnumber,numberoftrans

1 个答案:

答案 0 :(得分:0)

所有需要是一个存储日期和交易次数的表。

create table transactions_per_day (
  transaction_date date primary key,
  num_transactions integer not null check (num_transactions >= 0)
);

每月和每年的事务数可以在具有聚合函数(SUM())和WHERE子句的查询中完成。每月总计。 。

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;