最近接到需求,需要统计交易流水的月、季、年的数据
1:使用echarts.js
<script src="../resource/js/echarts.min.4.0.2.js"></script>
2:月SQL:
select a.ctime,total
FROM (
SELECT case when length(mon)=1 then concat(left('2019-01-01',5),'0',mon) else concat(left('2019-01-01',5),mon) end ctime
FROM (select @m:=@m+1 mon
FROM bs_account_payment_flowums ,(select @m:=0) a ) aa
LIMIT 12 ) a
LEFT JOIN (
SELECT fw.trade_date, GROUP_CONCAT('"',fw.merchant_id,'":',fw.total_fel*0.000001) total
FROM (
SELECT a.trade_date,a.merchant_id,SUM(a.total_fee) total_fel
FROM (select DATE_FORMAT(trade_date,'%Y-%m') trade_date,merchant_id,total_fee
FROM bs_account_payment_flowums) a
WHERE merchant_id = '30' GROUP BY trade_date,merchant_id) fw GROUP BY fw.trade_date ORDER BY fw.trade_date ) b
ON a.ctime = b.trade_date ORDER BY a.ctime;
季SQL
select CONCAT('第',a.ctime,'季度') ctime,b.total
FROM (
SELECT a.*
FROM (
SELECT CAST((QUARTER(CONCAT(a.ctime,'-01'))) as CHAR) ctime
FROM (
SELECT case when length(mon)=1 then concat(left('2019-01-01',5),'0',mon) else concat(left('2019-01-01',5),mon) end ctime
FROM (select @m:=@m+1 mon
FROM bs_account_payment_flowums ,(select @m:=0) a ) aa
LIMIT 12 ) a ) a GROUP BY a.ctime ) a
LEFT JOIN (
SELECT a.ctime,GROUP_CONCAT('"',a.market_id,'":',a.total_fee*0.000001) total
FROM (
SELECT QUARTER((DATE_FORMAT(trade_date,'%Y-%m-%d'))) ctime,SUM(total_fee) total_fee,market_id
FROM bs_account_payment_flowums
WHERE DATE_FORMAT(trade_date,'%Y-%m-%d') BETWEEN '2019-01-01' AND '2019-12-31' and market_id in ( 4 , 12 , 18 , 36 , 70 , 109 ) group by ctime,market_id ) a GROUP BY ctime ) b
ON a.ctime = b.ctime;
年SQL
select CAST(a.ctime as char) ctime,b.total
FROM (
SELECT DATE_FORMAT( DATE_ADD( DATE_SUB('2019-12-31', INTERVAL xc YEAR ), INTERVAL 1 DAY ), '%Y' ) AS ctime
FROM (
SELECT @xi := @xi + 1 AS xc
FROM (
SELECT 1
UNION SELECT 2
UNION SELECT 3
UNION SELECT 4 ) xc1, (
SELECT @xi := 0 ) xc0 ) xcxc ) a
LEFT JOIN (
SELECT a.ctime,GROUP_CONCAT('"',a.market_id,'":',a.total_fee*0.000001) total
FROM (
SELECT YEAR((DATE_FORMAT(trade_date,'%Y-%m-%d'))) ctime,SUM(total_fee) total_fee,market_id
FROM bs_account_payment_flowums
WHERE DATE_FORMAT(trade_date,'%Y-%m-%d') BETWEEN '2015-01-01' AND '2019-12-31' and market_id in ( 4 , 12 , 18 , 36 , 70 , 109 ) group by ctime,market_id ) a GROUP BY ctime) b
ON a.ctime = b.ctime;
上面的只是我写的SQL:
大家可以参考的是下面的SQL:
月:
SELECT case when length(mon)=1 then concat(left('2019-01-01',5),'0',mon) else concat(left('2019-01-01',5),mon) end ctime
FROM (select @m:=@m+1 mon
FROM bs_account_payment_flowums ,(select @m:=0) a ) aa
LIMIT 12
季:
SELECT a.*
FROM (
SELECT CAST((QUARTER(CONCAT(a.ctime,'-01'))) as CHAR) ctime
FROM (
SELECT case when length(mon)=1 then concat(left('2019-01-01',5),'0',mon) else concat(left('2019-01-01',5),mon) end ctime
FROM (select @m:=@m+1 mon
FROM bs_account_payment_flowums ,(select @m:=0) a ) aa
LIMIT 12 ) a ) a GROUP BY a.ctime
年:
SELECT DATE_FORMAT( DATE_ADD( DATE_SUB('2019-12-31', INTERVAL xc YEAR ), INTERVAL 1 DAY ), '%Y' ) AS ctime
FROM (
SELECT @xi := @xi + 1 AS xc
FROM (
SELECT 1
UNION SELECT 2
UNION SELECT 3
UNION SELECT 4 ) xc1, (
SELECT @xi := 0 ) xc0 ) xcxc