mysql统计近7天,近30天数据,echarts展示

<select id="selectStatsByMap" resultType="map" parameterType="map">
    select DATE_FORMAT(mycreatedate,'%m-%d') date0,ifnull(tt.count0, 0) count0
from (select curdate() mycreatedate union
select DATE_SUB(curdate(),INTERVAL 1 DAY) mycreatedate union
select DATE_SUB(curdate(),INTERVAL 2 DAY) mycreatedate union
select DATE_SUB(curdate(),INTERVAL 3 DAY) mycreatedate union
select DATE_SUB(curdate(),INTERVAL 4 DAY) mycreatedate union
select DATE_SUB(curdate(),INTERVAL 5 DAY) mycreatedate union
select DATE_SUB(curdate(),INTERVAL 6 DAY) mycreatedate 
<if test="dateType == '2'.toString()">
union
select DATE_SUB(curdate(),INTERVAL 7 DAY) mycreatedate union
select DATE_SUB(curdate(),INTERVAL 8 DAY) mycreatedate union
select DATE_SUB(curdate(),INTERVAL 9 DAY) mycreatedate union
select DATE_SUB(curdate(),INTERVAL 10 DAY) mycreatedate union
select DATE_SUB(curdate(),INTERVAL 11 DAY) mycreatedate union
select DATE_SUB(curdate(),INTERVAL 12 DAY) mycreatedate union
select DATE_SUB(curdate(),INTERVAL 13 DAY) mycreatedate union
select DATE_SUB(curdate(),INTERVAL 14 DAY) mycreatedate union
select DATE_SUB(curdate(),INTERVAL 15 DAY) mycreatedate union
select DATE_SUB(curdate(),INTERVAL 16 DAY) mycreatedate union
select DATE_SUB(curdate(),INTERVAL 17 DAY) mycreatedate union
select DATE_SUB(curdate(),INTERVAL 18 DAY) mycreatedate union
select DATE_SUB(curdate(),INTERVAL 19 DAY) mycreatedate union
select DATE_SUB(curdate(),INTERVAL 20 DAY) mycreatedate union
select DATE_SUB(curdate(),INTERVAL 21 DAY) mycreatedate union
select DATE_SUB(curdate(),INTERVAL 22 DAY) mycreatedate union
select DATE_SUB(curdate(),INTERVAL 23 DAY) mycreatedate union
select DATE_SUB(curdate(),INTERVAL 24 DAY) mycreatedate union
select DATE_SUB(curdate(),INTERVAL 25 DAY) mycreatedate union
select DATE_SUB(curdate(),INTERVAL 26 DAY) mycreatedate union
select DATE_SUB(curdate(),INTERVAL 27 DAY) mycreatedate union
select DATE_SUB(curdate(),INTERVAL 28 DAY) mycreatedate union
select DATE_SUB(curdate(),INTERVAL 29 DAY) mycreatedate
</if>
) tt0
LEFT JOIN (SELECT DATE_FORMAT(t.create_time,'%m-%d') date0,count(t.mec_id) count0 FROM exec_record t where 1=1
<if test="dateType == '1'.toString()">
and DATE_FORMAT(t.create_time,'%Y-%m-%d')>DATE_SUB(CURDATE(), INTERVAL 7 DAY)
</if>
<if test="dateType == '2'.toString()">
and DATE_FORMAT(t.create_time,'%Y-%m-%d')>DATE_SUB(CURDATE(), INTERVAL 30 DAY)
</if>
 GROUP BY date0) tt
on tt.date0 = DATE_FORMAT(tt0.mycreatedate,'%m-%d')
ORDER BY date0
</select>

dateType=1为7天内的统计数据

dateType=2为30天内的统计数据

mapper层

List<Map<String, Object>> selectStatsByMap(Map<String, Object> map);

service层,处理数据遍历,

List<Map<String, Object>>  maps = visitExecCustomerMapper.selectStatsByMap(map);
List<String> days = new ArrayList<>();
List<String> counts0 = new ArrayList<>();
for (Map m:maps){
    String date0 = MapUtils.getString(m,"date0");
    String count0 = MapUtils.getString(m,"count0");
    days.add(date0);
    counts0.add(count0);
 }
map.put("days",days);
map.put("counts0",counts0);

echars柱状图

days对应x轴

counts对应y轴

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值