新建测试表sales_test
新建测试表,并插入数据进行查看
create table sales_test(
time date,
sales float
);
查看数据
select * from sales_test;

原理
DB2可以使用英语来执行日期和时间计算:
current date + 1 YEAR
current date + 3 YEARS + 2 MONTHS + 15 DAYS
current time + 5 HOURS - 3 MINUTES + 10 SECONDS
以2017-01-04 16:46:47为例,做日期和时间的计算操作
values current date + 1 YEAR;
values current date + 3 YEARS + 2 MONTHS + 15 days;
values current time;
values current time + 5 HOURS - 3 MINUTES + 10 SECONDS;
得到的结果将是:
2018-01-04
2020-03-19
21:43:57
因此,求同环比的时候可以通过对日期进行计算求出去年当日和上月当日,再通过where语句即可求出同比环比销售额。
而在mysql中使用date_add()函数做日期加减操作。
如,
date_add(time, interval 1 day)

实例
求环比
select time,sales,pre_sales,(sales-pre_sales)/pre_sales as rate from
(select time,sales,
(select sales from sales_test b where b.time=a.time-1 day) as pre_sales
from sales_test a);

求同比
select time,sales,pre_sales,(sales-pre_sales)/pre_sales as rate from
(select time,sales,
(select sales from sales_test b where b.time=a.time-1 year) as pre_sales
from sales_test a);

网友评论