mysql数据分析SQL

同比

概念:同比就是与历史同时期比较。

例如,2019年7月份与2018年7月份相比,就是与不同年份的同一时期作比较,叫同比。

select
本月时间,
case when 2019-07数据 is null or 2019-07数据 = 0 then 0 else 2019-07数据 end 2019-07数据,
case when 2018-07数据 is null or 2018-07数据 = 0 then 0 else 2018-07数据 end 2018-07数据,
case when 2018-07数据 is null or 2018-07数据 = 0 then 0 
else ( convert ( ( ( 2019-07数据 - 2018-07数据 ) / 2018-07数据 ) * 100, decimal ( 10, 2 ) ) ) 
end 同比
from 
( 2019-07数据表 ) 2019-07数据
left join 
( 2018-07数据表 ) 2018-07数据
on 2019-07数据.产品名 = 2018-07数据.产品名

环比

概念:与上一统计段比较。

(1)就是先取本月的数据
(2)再用date_add函数向后延迟一个月(用interval)同样的方法取值
(3)二者进行关联
(4)从错位关联的两张大临时表中取数并做计算

例如,2019年7月份与2019年6月份相比较,叫环比。

select
本月时间,
case when 2019-07数据 is null or 2019-07数据 = 0 then 0 else 2019-07数据 end 2019-07数据,
case when 2019-06数据 is null or 2019-06数据 = 0 then 0 else 2019-06数据 end 2019-06数据,
case when 2019-06数据 is null or 2019-06数据 = 0 then 0 
else ( convert ( ( ( 2019-07数据 - 2019-06数据 ) / 2019-06数据 ) * 100, decimal ( 10, 2 ) ) ) 
end 环比
from 
( 2019-07数据表 ) 2019-07数据
left join 
( 2019-06数据表 ) 2019-06数据
on 2019-07数据.产品名 = 2019-06数据.产品名

占比

(1)求出分组、汇总

(2)笛卡尔积连接

(3)相除

例如,品类销量占比

select 
t1.name as 品类名称,
t1.num as 销售量,
concat(	format( t1.num / t2.total * 100, 2 ),'%') as 占比 
from
(select name,sum(销售量) num from 销售表 group by name ) t1
inner join 
( select sum(销售量) total from 销售表 ) t2 
on 1=1

参考:https://blog.csdn.net/zzqhello2018/article/details/101533565

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