統計資料環比計算

2021-09-29 23:06:31 字數 1903 閱讀 1027

環比計算,演算法是:先按照要求計算出乙個時間段資料的分組統計作為a表(作為當前資料,假設今天為10.15日),然後將其時間+1個單位再次計算作為b表(實質是計算出前一天的數量放在當前天去對比,如下14日資料變為15日同一天的乙個虛擬資料,主要是將前一天資料均向後一天移動一下),然後用a表對b表進行左聯接查詢,就有如下對應關係(通過時間將前一天資料和當天資料關聯在一張表上),然後方便操作,sql語句如下:

a表時間

資料b表時間

資料10.16

510.15

510.15

410.14

410.14

210.13

210.13

作為當前資料

前一天資料

select 

tt.currenttotal currenttotal,tt.time `time`,

case when

tt.beforetotal is null or tt.beforetotal=0 then 0.00else

format(((tt.currenttotal-tt.beforetotal)/tt.beforetotal)*100,2)

end ratio

from

(select

m.current_total currenttotal,n.before_total beforetotal,m.time

from

(select count(t.`id`) current_total , date_format(t.create_time,#) `time`

from u_account t where t.`del_flag`=0 and t.company_id=# and t.`create_time`

between date_format(#,#) and date_format(date_add(#,interval # $),#)

group by date_format(t.create_time,#)

) mleft join

(select count(t.`id`) before_total ,date_format(date_add(t.`create_time`,interval 1$),#) `time`

from u_account t where t.`del_flag`=0 and t.company_id=# and t.`create_time`

between date_format(#,#) and date_format(date_add(#,interval # $),#)

group by date_format(date_add(t.`create_time`,interval 1$),#)

) non m.time=n.time) tt

在如上sql中,如果傳入時間為」2018-10「想要查詢2018-10~2018-11之間的資料,實際返回往往為空,那麼我們需要將其變為2018-10-01~2018-11-01查詢這個時間段的資料才可以,如上,我們為了相容年月日的查詢,我們將sql中的變化的部分採用佔位符來標識,然後在**裡面組織我們的引數即可,組織引數**如下:

private mapcreate_parameter(mapparam,integer num)

if(length==7)

if(length==10)

if(null!=outformat && outunit!=null && null!=format && unit!=null

) param.put("time", time);

param.put("num", num);

return

param;

}

即可實現環比計算,同比計算的演算法大同小異。

分組統計資料

with a as select convert varchar 10 starttime,120 starttime,case when organid like 0226 then else 非 end as deptname,sum case when billableseconds 0 th...

oracle查詢統計資料

oracle 按每天,每週,每月,每季度,每年查詢統計資料 按天統計 select count dataid as 每天運算元量,sum from tablename group by trunc createtime,dd 按自然周統計 select to char date,iw sum fro...

oracle範圍統計資料

需求 充值總筆數 筆數 單筆0 200元 筆數 單筆201 300元 筆數 單筆301 500元 筆數 單筆501元及以上 參照範例 需求 統計wait order表中的工單總數 未處理工單總數 已完成工單總數 未完成工單總數。表結構 為了舉例子方便,wait order表只有兩個字段,分別是id ...