SQL同比-简单示例
同比:一般情况下是今年第n月与去年第n月比
- 创建一个简单的登录活动记录表
drop table if EXISTS logintime;
create table logintime (
logincode VARCHAR(10),
usercode VARCHAR(10),
username VARCHAR(10),
logintime TIMESTAMP
);
- 插入数据
insert into logintime values('acd001','aqc985654','王俊名','2019-12-12 8:01:12');
insert into logintime values('acd001','aqc985654','王俊名','2019-12-12 10:01:04');
insert into logintime values('acd001','aqc985654','王俊名','2019-12-12 12:05:28');
insert into logintime values('acd001','aqc985654','王俊名','2019-12-12 13:03:36');
insert into logintime values('acd001','aqc985654','王俊名','2019-12-12 15:07:57');
insert into logintime values('acd001','aqc985654','王俊名','2019-12-12 18:01:22');
insert into logintime values('acd001','aqc985654','王俊名','2019-12-12 20:10:42');
insert into logintime values('acd001','aqc985654','王俊名','2018-12-12 10:23:45');
insert into logintime values('acd001','aqc985654','王俊名','2018-12-12 12:11:23');
insert into logintime values('acd001','aqc985654','王俊名','2018-12-12 15:14:33');
insert into logintime values('acd001','aqc985654','王俊名','2018-12-12 20:35:01');
- 查询 看一看数据什么样
select * from logintime;
.
-- 今年双12
select count(0) logincountnow from logintime where date(logintime)= '2019-12-12';
-- 去年双12
select count(0) logincountlastyear from logintime where date(logintime)= '2018-12-12';
.
4.同比操作
-- 同比操作
SELECT
t.username,
t.logincountnow,
t2.logincountlastyear,
( t.logincountnow / t2.logincountlastyear ) - 1 AS rat -- 这个列就是你要的同比增长值
FROM
-- 主数据
( SELECT t.username, count( 0 ) logincountnow FROM logintime t WHERE date(logintime)= '2019-12-12' GROUP BY t.username ) t
LEFT JOIN
-- 对比数据
( SELECT t.username, count( 0 ) logincountlastyear FROM logintime t WHERE date(logintime)= '2018-12-12' GROUP BY t.username ) t2
ON t.username = t2.username;
简单来讲就是拿出数据表的同时间长度内相对位置点的一致的数据进行对比。这个相对的点时间单位可以是时分秒,也可以是日月年。
.
SQL环比-简单示例
环比:表示连续2个统计周期(比如连续两月)内的量的变化比。
简单讲:就是两个连续的时间长度内数据量的变化
还是在之前的表里加入一些数据
insert into logintime values('acd001','aqc985654','王俊名','2019-07-07 18:01:22');
insert into logintime values('acd001','aqc985654','王俊名','2019-07-08 20:10:42');
insert into logintime values('acd001','aqc985654','王俊名','2018-01-01 10:23:45');
insert into logintime values('acd001','aqc985654','王俊名','2018-03-18 12:11:23');
insert into logintime values('acd001','aqc985654','王俊名','2018-07-07 15:14:33');
insert into logintime values('acd001','aqc985654','王俊名','2018-11-11 20:35:01');
执行一下代码查看一下
select count(0) logincountnow from logintime where year(logintime) = '2019';
select count(0) logincountlastyear from logintime where year(logintime) = '2018';
如上图这个“王俊名”同志 今年登录9次
如上图这个“王俊名”同志 去年登录8次
-- 环比操作
SELECT
t.username,
t.logincountnow,
t2.logincountlastyear,
( t.logincountnow / t2.logincountlastyear ) - 1 AS rat -- 这个列就是你要的环比增长值
FROM
-- 主数据
( SELECT t.username, count( 0 ) logincountnow FROM logintime t WHERE year(logintime)= '2019' GROUP BY t.username ) t
LEFT JOIN
-- 对比数据
( SELECT t.username, count( 0 ) logincountlastyear FROM logintime t WHERE year(logintime)= '2018' GROUP BY t.username ) t2
ON t.username = t2.username;
.
环比概念示例图:
.
同比、环比这两张图是不是很像有点相似?对比一下哪里不一样,哈哈