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

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