DB2同比环比

新建测试表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);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 之前的那种同比环比方式,效率不高。数据量一大,就不好用了。因此用with as 写了另一个求同比环比的sql。 s...
    夏无忧阳阅读 1,595评论 0 0
  • 背景: 阅读新闻 11G ASM磁盘组不能自动MOUNT处理 [日期:2016-01-12] 来源:Linux社区...
    yanglei3849阅读 3,922评论 0 2
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,242评论 6 13
  • 1.简介 数据存储有哪些方式?电子表格,纸质文件,数据库。 那么究竟什么是关系型数据库? 目前对数据库的分类主要是...
    乔震阅读 1,834评论 0 2
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,803评论 18 399