sql同比環比 簡單示例

SQL同比-簡單示例

同比:一般情況下是今年第n月與去年第n月比

  1. 創建一個簡單的登錄活動記錄表
drop table if EXISTS logintime;
create table logintime (
logincode VARCHAR(10),
usercode VARCHAR(10),
username VARCHAR(10),
logintime TIMESTAMP
);
  1. 插入數據
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');
  1. 查詢 看一看數據什麼樣
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';

同比示例今年雙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';

環比結果1
如上圖這個“王俊名”同志 今年登錄9次
環比結果2

如上圖這個“王俊名”同志 去年登錄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;

環比結果.
環比概念示例圖:
環比示例圖.
同比、環比這兩張圖是不是很像有點相似?對比一下哪裏不一樣,哈哈

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章