DB2同比環比2(with as )
之前的那種同比環比方式,效率不高。資料量一大,就不好用了。因此用with as 寫了另一個求同比環比的sql。
sql
creat table xxx as
(with m(time,ticket_type,business_name,amount) as (select createtime,ticket_type,business_name,ticket_amount from xxx order by createtime)
select cur.*,
tb.amount tb_amount from m cur
left join m tb
on
cur.business_name=tb.business_name and cur.ticket_type=tb.ticket_type and substr(to_date(cur.time,'yyyy-mm-dd')-1 year,1,10)=tb.time
order by time desc);
分析:
- with as 片段,提高效率。將 時間、票類、商家、分成放在m中
- ** to_date(cur.time,'yyyy-mm-dd')-1 year** 求去年同期時間
注意:
由於時間有多個,需要有其他欄位將分成唯一確定,因此要想分成和哪些有關。是由票類商家確定的。所以
cur.business_name=tb.business_name and cur.ticket_type=tb.ticket_type
否則,可能出現多對一,使結果不唯一。
結果
TIME TICKET_TYPE BUSINESS_NAME AMOUNT TB_AMOUNT
2017-03-01 套票 xxx 31.00 67.40
2017-03-01 套票 xxx 62.00 133.00
2017-03-01 套票 XXX 18.60 39.80
2017-03-01 套票 XXX 344.80 750.90
2017-03-01 套票 XXX 485.00 1103.20
2017-03-01 套票 XXX 93.00 200.00
2017-03-01 套票 XXX 95.20 217.30
2017-03-01 套票 XXX18.60 39.80
2017-03-01 XX XXX 122.78 305.71
2017-03-01 XX XXX45.00 105.00
將結果插入表中
create table xx (createtime varchar(64),ticket_type varchar(128),business_name varchar(128),amount numeric(18,2),b_amount numeric(18,2));
insert into xx
with m(time,ticket_type,business_name,amount)
as (select create time,ticket_type,business_name,ticket_amount from XXX order by createtime)
select cur.*,
tb.amount tb_amount from m cur
left join m tb
on cur.business_name=tb.business_name and cur.ticket_type=tb.ticket_type and substr(to_date(cur.time,'yyyy-mm-dd')-1 year,1,10)=tb.time order by time desc ;
select * from xx;
相關文章
- DB2和GreenPlum對比DB2
- 設定DB2環境DB2
- mysql 求分組中位數、環比、同比、中位數的環比、同比MySql
- ORACLE和SQL SERVER,DB2對比OracleSQLServerDB2
- Hive之同比環比的計算Hive
- 幾個指標(同比,環比,定期比)(轉載)指標
- DB2 和SQL Server自增列比較DB2SQLServer
- DB2常用函式與Oracle比較TIDB2函式Oracle
- 資料庫對比SQL SERVER 、 ORACLE、DB2資料庫SQLServerOracleDB2
- DB2控制中心 比較慢問題DB2
- oracle,db2,mysql類比之六程式管理OracleDB2MySql
- DB2環境變數管理方法集TODB2變數
- DB2:ksh: db2: not found.DB2
- oracle,db2,mysql類比之四儲存管理OracleDB2MySql
- oracle,db2,mysql類比之七網路管理OracleDB2MySql
- oracle,db2,mysql類比之八事務管理OracleDB2MySql
- 哪個 BI 產品能實現同比環比?
- DB2系列之DB2安裝DB2
- oracle,db2,mysql類比之二體系結構OracleDB2MySql
- oracle,db2,mysql類比之三使用者管理OracleDB2MySql
- oracle,db2,mysql類比之五記憶體管理OracleDB2MySql記憶體
- [DB2]DB2備份和恢復DB2
- [DB2]db2重定向恢復DB2
- DB2 HADR環境下,應用的改變DB2
- 實現同比、環比計算的N種姿勢
- oracle,db2,mysql類比之九備份與恢復OracleDB2MySql
- db2 條帶2DB2
- DB2 WLMDB2
- DB2 explainDB2AI
- DB2 listenerDB2
- db2概念DB2
- DB2 INFOCENTERDB2
- join (db2)DB2
- DB2 CLPDB2
- The DB2 environmentDB2
- DB2 CRASHDB2
- 提取DB2多分割槽環境當前的狀態DB2
- oracle,db2,mysql類比之一常用類似知識點OracleDB2MySql